DB2使用多个条件在存储过程中进行预检查

xpszyzbs  于 2023-04-30  发布在  DB2
关注(0)|答案(1)|浏览(196)

我正在调用一个存储过程,它应该进行一些预检查。目前,我正在进行所有检查。当一个检查失败时,它应该抛出异常。
我怎么才能实现呢?

DECLARE VSTRING VARCHAR(1);

SELECT * INTO VSTRING
FROM
(SELECT 'A'
FROM A WHERE ID = xxx)
UNION ALL 
(SELECT 'B'
FROM B WHERE xxx)

IF(VSTRING IS NOT NULL) THEN
SIGNAL SQLSTATE '0101' SET MESSAGE_TEXT = 'Violation ...' || VSTRING;
END IF
cngwdvgl

cngwdvgl1#

您将得到一条关于此代码第一次任意违规的消息。

BEGIN
DECLARE VSTRING VARCHAR(1);
DECLARE MSG VARCHAR (70);

SELECT V INTO VSTRING
FROM
(
  SELECT 'A' AS V
  FROM (VALUES 1) A (ID) 
  WHERE ID = 1
UNION ALL 
  SELECT 'B'
  FROM (VALUES 1) B (ID)
  WHERE ID = 1
)
LIMIT 1;

IF(VSTRING IS NOT NULL) THEN
  SET MSG = 'Violation ...' || VSTRING;
  SIGNAL SQLSTATE '75101' SET MESSAGE_TEXT = MSG;
END IF;

END
[IBM][CLI Driver][DB2/LINUXX8664] SQL0438N  Application raised error or warning with diagnostic text: "Violation ...B".  SQLSTATE=75101 SQLCODE=-438

fiddle

相关问题