当我创建触发器时,我遇到了这个问题。 请看看它并给我解决方案,帮助我解决这个问题
代码:
CREATE OR REPLACE TRIGGER TEST_ID_AUTO
BEFORE INSERT ON TEST
FOR EACH ROW
BEGIN
SELECT 'E-'||TO_CHAR(NVL(MAX(TO_NUMBER(SUBSTR(EMP_ID,3))),100)+1) INTO :NEW.EMP_ID
FROM TEST
END;
答案 0 :(得分:0)
您的Oracle数据库集成开发环境(IDE)可以为您提供帮助。
您可以使用SHOW ERRORS命令在编译时获得有关代码中发现的问题的更多反馈。
Oracle SQL Developer中内置的客户端解析器也会在您出现“不对”的时候提醒您 - 在这种情况下, END;
你的代码中的会混淆解析器,因为它会将代码视为上面SELECT INTO行的一部分,因为你忘记了语句终结符(;)
SQL Developer不会使用SHOW ERRORS命令,而是自动向您显示编译器反馈 - 只需确保您的View>日志面板已激活。
如果双击错误,它会将光标前进到与错误关联的行。你的问题通常应该紧接在它之前 - 在这种情况下,你在第6行丢失';)。