如果触发器中的语句不起作用 SQL(Oracle)
Posted
技术标签:
【中文标题】如果触发器中的语句不起作用 SQL(Oracle)【英文标题】:If statement inside Trigger not working SQL(Oracle) 【发布时间】:2016-06-04 20:06:00 【问题描述】:我的目标是创建一个触发器来检查您尝试输入的号码 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 ||成员子集
【问题讨论】:
【参考方案1】:如果 val = 0 那么 raise_application_error(-20502, '仅限部门 6');
您应该在 DOC_TIPO 和 TIPO_DOC 之间做出选择;)
【讨论】:
哦,非常感谢你的朋友!我花了几个小时试图解决这个问题以上是关于如果触发器中的语句不起作用 SQL(Oracle)的主要内容,如果未能解决你的问题,请参考以下文章