【问题标题】:If statement inside Trigger not working SQL(Oracle)如果触发器中的语句不起作用 SQL(Oracle)
【发布时间】:2023-03-15 07:00:02
【问题描述】:

我的目标是创建一个触发器来检查您尝试输入的号码 NR_RECIBO 是否在 Doc_cabecalho 表中,属性为 TIPO_DOC = 4

CREATE OR REPLACE TRIGGER ValidaRecibo
BEFORE INSERT ON Recibo
FOR EACH ROW
DECLARE val NUMBER;
BEGIN
    SELECT COUNT(*) INTO val 
    FROM Doc_cabecalho 
    WHERE (TIPO_DOC = 4 AND NR_DOCUMENTO = :NEW.NR_RECIBO);

    IF val = 0 
    THEN (-20502, ' Only from department 4 ');
    END IF;
END ValidaRecibo;

然而,这会引发以下错误:

PLS-00103:在预期以下情况之一时遇到符号“,”:
* & = - + at in is mod 余数 not rem or != or ~= >= and or like like2 like4 likec as between ||成员子集

【问题讨论】:

    标签: oracle if-statement plsql triggers


    【解决方案1】:

    如果 val = 0 那么 raise_application_error(-20502, '仅限部门 6');

    您应该在 DOC_TIPO 和 TIPO_DOC 之间做出选择;)

    【讨论】:

    • 哦,非常感谢你的朋友!我花了几个小时试图解决这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 2011-03-16
    • 1970-01-01
    相关资源
    最近更新 更多