DB2 throw exception in case block



在我的触发器,我想抛出一个异常,但它不能正常工作,得到了异常。使用DB2 LUW

{0:0} An unexpected token "SQLSTATE '1234'" was found following "
SIGNAL".  Expected tokens may include:  "<space>".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.28.11

CREATE OR REPLACE TRIGGER "TRG_ABC_DELETE_CHECK"
 NO CASCADE BEFORE DELETE ON ABC
REFERENCING OLD AS OLD_OBJ
FOR EACH ROW MODE DB2SQL
BEGIN
SELECT CASE WHEN (SELECT 1 FROM ABC WHERE ID = 2 OR NAME = 'AA' AND OLD_OBJ.TYPE = 2) THEN
SIGNAL SQLSTATE '1234' ('Wrong Parameters');
END FROM SYSIBM.SYSDUMM1;
END

不能在SELECT语句中使用其他语句(如SIGNAL)。
使用RAISE_ERROR函数来代替让SELECT有条件地引发异常。

或者用CASE语句代替你在问题中使用的CASE表达式

最新更新