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

Stored procedures DB2存储过程if语句字符串比较,stored-procedures,db2,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

我正在开发一个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

这甚至无法部署。

为了节省时间,在请求帮助时,一定要编写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
@

为了节省时间,在请求帮助时,一定要编写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
@

您得到的确切错误代码(sqlcode、sqlstate、message)是什么?PT.TESTPROC:9:非法符号“FROM”。一些可能合法的符号是:INTO。SQLCODE=-104,sqlstate我想我不能将IF语句与SUBSTR一起使用。但是,如果((SUBSTR(IN_NBR,1,2)!=“IO”)您的Db2服务器操作系统是什么(z/os,I-series,linux/unix/windows),我不知道最好的方法是什么?Db2服务器操作系统是z/os。问题在于我的查询。您得到的确切错误代码(sqlcode,sqlstate,message)是什么?PT.TESTPROC:9:非法符号“FROM”。一些可能合法的符号是:INTO.SQLCODE=-104,sqlstate我想我不能将IF语句与SUBSTR一起使用。但是,我不知道最好的方法是IF((SUBSTR(IN_NBR,1,2)!='IO')什么是您的Db2服务器操作系统(z/os,I-series,linux/unix/windows)?Db2服务器操作系统是z/os。问题在于我的查询。