Oracle SQL Developer创建触发器报PLS-00103 end-of-file错误求助
问题原因
这个报错是PL/SQL语法解析失败导致的,你这里主要有两个可能的触发原因:
- 执行时没有选中完整代码:你需要把从
CREATE开头到最后的/的整段代码全部选中再运行,要是漏选了末尾的/,Oracle会认为PL/SQL块没有写完,就会抛出遇到文件结束符的错误。 - 触发器和序列重名:你定义的触发器名称和你调用的序列名称都是
TEST_DATA.IVR_SEQ,部分版本的Oracle解析时会出现对象识别混淆,也会触发该类语法报错。
修复方案
先把触发器重命名为和序列不重复的名称,再保证执行时选中完整代码即可。如果是Oracle 11g及以上版本,还可以简化赋值语法,不需要写SELECT ... FROM dual的结构。
修改后的完整代码参考:
CREATE OR REPLACE EDITIONABLE TRIGGER TEST_DATA.IVR_SEQ_TRG BEFORE INSERT ON TEST_DATA.TRANSACTION FOR EACH ROW BEGIN :new.IVRID := TEST_DATA.IVR_SEQ.NEXTVAL; END; /
如果是11g以下的老版本Oracle,就保留原来的SELECT写法,只改触发器名即可:
CREATE OR REPLACE EDITIONABLE TRIGGER TEST_DATA.IVR_SEQ_TRG BEFORE INSERT ON TEST_DATA.TRANSACTION FOR EACH ROW BEGIN SELECT TEST_DATA.IVR_SEQ.NEXTVAL INTO :new.IVRID FROM dual; END; /
内容的提问来源于stack exchange,提问作者user3542274
相关产品推荐
相关产品推荐

