Oracle使用merge into 编写存储过程 遇编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字
createorreplaceprocedureSaveServiceTime(in_iWorkgroupIDvarchar2,in_dtDayStartTimedate...
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; 展开
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; 展开
4个回答
展开全部
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语句,最后程序运行测试没问题就完成了 。
展开全部
when not matched then
insert into t1 这里不能用INTO T1语法都错误,直接INSERT VALUES()括号里填相应的字段,如果没有给空值
insert into t1 这里不能用INTO T1语法都错误,直接INSERT VALUES()括号里填相应的字段,如果没有给空值
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-04-18
展开全部
把你的这段
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);试试看
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);试试看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那里出错了?
更多追问追答
追问
就是提示编译错误:PL/SQL: ORA-00926: 缺失 VALUES 关键字
追答
values 的意思是值的意思!你看一下你的语句那里少了或者设置错误了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询