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 then
insert 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 when
not
matched
then
insert
into
t1
这里不能用INTO
T1语法都错误,直接INSERT
VALUES()括号里填相应的字段,如果没有给空值

以上是关于Oracle使用merge into 编写存储过程 遇编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字的主要内容,如果未能解决你的问题,请参考以下文章

Oracle存储过程merge into

mybatis 使用oracle merge into 语句踩坑实录

oracle 中SQL 语句开发语法 SELECT INTO含义

datagrips oracle编写存储过程

Oracle merge into的优势

oracle merge into 表里面的一部分数据怎样做?