动态集DB2中的输入输出参数

动态集DB2中的输入输出参数,db2,Db2,我的桌子是aaa(一个字符(5)) 我得到一个错误: 部署[sss]A.ZZZ 已开始运行A.ZZZ-Deploy。创建存储过程返回SQLCODE:-104,SQLSTATE:42601。A.ZZZ:14:在“”之后发现意外标记“”。预期的令牌可能包括:“S1使用cID进入cc”。。SQLCODE=-104,SQLSTATE=42601,DRIVER=3.69.56在“”之后发现意外的令牌“”。预期的令牌可能包括:“S1使用cID进入cc”。。SQLCODE=-104,SQLSTATE=4260

我的桌子是aaa(一个字符(5))

我得到一个错误:

部署[sss]A.ZZZ 已开始运行A.ZZZ-Deploy。创建存储过程返回SQLCODE:-104,SQLSTATE:42601。A.ZZZ:14:在“”之后发现意外标记“”。预期的令牌可能包括:“S1使用cID进入cc”。。SQLCODE=-104,SQLSTATE=42601,DRIVER=3.69.56在“”之后发现意外的令牌“”。预期的令牌可能包括:“S1使用cID进入cc”。。SQLCODE=-104,SQLSTATE=42601,DRIVER=3.69.56 A.ZZZ-部署失败。A.ZZZ-回滚已成功完成。

多个问题

  • S1
    必须具有
    语句类型,或者不能在
    全部,但不能声明为
    VARCHAR
  • print(cc)
    根本不是有效的语句。 如果您想要一些调试输出,请阅读 . 从中调用例程的工具必须具有显示功能 消息缓冲区的内容
  • 你的日常工作没有任何回报 调用方/客户端的游标。无需使用
    动态结果集1
    子句。这个问题并不严重

通过学习工作示例,了解如何编写例程。在这里向我展示显示内容的工具。SQLscript不受支持EDDB2命令行处理器(CLP)。实际上,您可以使用dbms_输出模块的例程自行实现这种显示,如中所示。
      CREATE OR REPLACE PROCEDURE zzz ()
         DYNAMIC RESULT SETS 1
     P1: BEGIN
        Declare cID char(5) ;
        Declare cc char(5) ;
        Declare csql varchar(200) ;
        Declare s1 varchar(200) ;

         Set cID = 'a' ;

         SET Csql = 'SET ? = (select a from aaa where a = :cID)' ;

          PREPARE S1 FROM Csql  ;       
          EXECUTE S1 into cc using cID ;     {error this line}

           print (cc) ;
    END P1