DB2存储过程if语句字符串比较

时间:2018-05-23 18:06:58

标签: stored-procedures db2

我正在处理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

甚至无法部署。

1 个答案:

答案 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
@