【问题标题】:PLS-00103: Encountered the symbol "INSERT"PLS-00103:遇到符号“INSERT”
【发布时间】:2018-12-12 14:17:22
【问题描述】:

我执行了下面的 PLSQL 查询。

SET SERVEROUT ON;
Create or Replace Trigger bi_Shippers
Before INSERT on Shippers
For EACH ROW
ENABLE
DECLARE
v_User VARCHAR2(20);
BEGIN
SELECT user INTO v_User from Dual;
DBMS_OUTPUT.PUT_LINE('You Just inserted a Line'||v_User);
END;

INSERT into shippers(shipperid) VALUES(5);

我收到以下错误。 触发BI_SHIPPERS编译

行/列错误


8/1 PLS-00103:遇到符号“INSERT” 错误:检查编译器日志

请帮忙,因为我是 PLSQL 的新手。``

【问题讨论】:

    标签: plsql


    【解决方案1】:

    您需要用斜杠(`/')结束程序:

    END;
    /
    INSERT into shippers(shipperid) VALUES(5);
    

    【讨论】:

    • 感谢您的解决方案。但它不起作用。我收到以下错误。错误报告 - SQL 错误:ORA-04098:触发器 'SYSTEM.BI_SHIPPERS' 无效并且重新验证失败 04098。00000 - “触发器 '%s.%s' 无效并且重新验证失败” *原因:触发器是试图检索执行,发现无效。这也意味着触发器的编译/授权失败。 *Action:选项是解决编译/授权错误、禁用触发器或删除触发器。
    • 是的,它是 oracle DB。单个插入行正在工作
    • @SatyabrataKar 在For EACH ROW 之后删除ENABLE
    • @SatyabrataKar 你希望从dual 表中得到什么user?这是真正的触发器吗?使用来自dba-oracle.com/…的提示检查错误
    • 我期待来自双表的“系统”用户。触发器端没有错误,因为我在输出中得到“触发器 BI_SHIPPERS 已编译”。
    猜你喜欢
    • 2018-01-23
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多