Oracle使用merge into 编写存储过程 遇编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle使用merge into 编写存储过程 遇编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字相关的知识,希望对你有一定的参考价值。
create or replace procedure SaveServiceTime(
in_iWorkgroupID varchar2,
in_dtDayStartTime date,
in_dtDayEndTime date,
in_dtWeekendStartTime date,
in_dtWeekendEndTime date
) as
begin
merge into CTIL_ServiceTime t1
using (select count(*) co from t1 where t1.iWorkgroupID=in_iWorkgroupID) tmp
on (tmp.co<>0)
when matched then
update
set t1.dtDayStartTime=in_dtDayStartTime,t1.dtDayEndTime=in_dtDayEndTime,t1.dtWeekendStartTime=in_dtWeekendStartTime,t1.dtWeekendEndTime=in_dtWeekendEndTime
where t1.iWorkgroupID=in_iWorkgroupID
when not matched then
insert into t1(iServiceTimeID,iWorkgroupID,dtDayStartTime,dtDayEndTime,dtWeekendStartTime,dtWeekendEndTime)
values(CTIL_SERVICETIME_SEQID.NEXTVAL,in_iWorkgroupID,in_dtDayStartTime,in_dtDayEndTime,in_dtWeekendStartTime,in_dtWeekendEndTime);
commit;
end;
Oracle使用merge into 编写存储过程 遇编译错误,是设置错误造成的,解决方法如下:
1、首先新建存储过程,Create or Replace Procedure CHK_SYS_EMP 检查系统工号。
2、定义参数及变量:(TREV IN VARCHAR2,TRES OUT VARCHAR2) IS C_EMP VARCHAR2(25)。
3、存储过程框架用Begin开始,End结束。
4、查看需要调用表的结构以及相关字段。会用到表中的 EMP_NO ENABLED。
5、存储过程按需添加SQL语句,最后程序运行测试没问题就完成了 。
参考技术A when not matched theninsert into t1 这里不能用INTO T1语法都错误,直接INSERT VALUES()括号里填相应的字段,如果没有给空值本回答被提问者采纳 参考技术B 把你的这段
when not matched then
insert into t1(iServiceTimeID,iWorkgroupID,dtDayStartTime,dtDayEndTime,dtWeekendStartTime,dtWeekendEndTime)
values(CTIL_SERVICETIME_SEQID.NEXTVAL,in_iWorkgroupID,in_dtDayStartTime,in_dtDayEndTime,in_dtWeekendStartTime,in_dtWeekendEndTime)
改成
when not matched then
insert values(CTIL_SERVICETIME_SEQID.NEXTVAL,in_iWorkgroupID,in_dtDayStartTime,in_dtDayEndTime,in_dtWeekendStartTime,in_dtWeekendEndTime);试试看 参考技术C 那里出错了?追问
就是提示编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字
追答values 的意思是值的意思!你看一下你的语句那里少了或者设置错误了!
追问没能检查出来
Oracle使用merge into 编写存储过程 遇编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字
参考技术A whennot
matched
then
insert
into
t1
这里不能用INTO
T1语法都错误,直接INSERT
VALUES()括号里填相应的字段,如果没有给空值
以上是关于Oracle使用merge into 编写存储过程 遇编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字的主要内容,如果未能解决你的问题,请参考以下文章
mybatis 使用oracle merge into 语句踩坑实录