我正在处理DB2存储过程,我想执行以下操作:
CREATE PROCEDURE TestProc ( IN IN_NBR CHAR(20))
ISOLATION LEVEL CS
VALIDATE BIND
RESULT SETS 1
P1: BEGIN
IF ((SUBSTR(IN_NBR,1,2) != 'IO')
OR (SUBSTR(IN_NBR,1,2) != 'DO'))
THEN
SELECT *
FROM AB.WC_TEM WC
WHERE WC.CAT_NBR = IN_NBR
WITH UR;
END IF;
END P1
甚至无法部署。
答案 0 :(得分:5)
为了节省时间,请在寻求帮助时始终编写Db2服务器操作系统和Db2版本。答案可能取决于这些事实。
确保语句终止符不是默认值(在下面的示例中,我使用@作为终结符),并遵循在SQL过程中使用游标的规则将结果集返回给客户端或调用者:
示例:
CREATE or replace PROCEDURE TestProc ( IN IN_NBR CHAR(20) )
ISOLATION LEVEL CS
VALIDATE BIND
language sql
specific TestProc
dynamic RESULT SETS 1
BEGIN
declare c1 cursor for SELECT * FROM AB.WC_TEM WHERE CAT_NBR = IN_NBR with ur;
IF ((SUBSTR(IN_NBR,1,2) != 'IO') OR (SUBSTR(IN_NBR,1,2) != 'DO'))
THEN
open c1;
END IF;
END
@