代码之家  ›  专栏  ›  技术社区  ›  Safirah

触发器内的If语句不工作SQL(Oracle)

  •  2
  • Safirah  · 技术社区  · 9 年前

    我的目标是创建一个触发器,检查您试图输入的数字 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是mod余数而不是rem<>或!=或~=>=<=<(lt;)>和或like like 2 like 4 like c as between | member submultiset

    1 回复  |  直到 9 年前
        1
  •  1
  •   Mottor    9 年前

    如果val=0,则 raise_application_error(-20502,'仅来自部门6');

    您应该在DOC_TIPO和TIPO_DOC之间做出决定;)