ORA_00905:缺失关键字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA_00905:缺失关键字相关的知识,希望对你有一定的参考价值。

insert into 表1(字段...) select 字段from (select 字段 from 表2 where 条件) left join(select 字段 from 表3) union all
select 字段 from 表3,表4
union all
select 字段 from 表3,表4,表5 where 条件)表6
where 条件 执行时总是报ORA_00905:缺失关键字,求解

参考技术A and 位置可能缺少空格,你生成的sql语句出现了语法错误

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 的意思是值的意思!你看一下你的语句那里少了或者设置错误了!

追问

没能检查出来

以上是关于ORA_00905:缺失关键字的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00905: 缺少关键字

ORA-00905 缺少关键字

ORA-00905: 缺少关键字 Hibernate 查询

ORA-00905: 缺少关键字(约束外键)

case 语句的“ORA-00905:缺少关键字”

错误:ORA-00905:将表连接到选择查询时缺少关键字