动态设置 DB2 中的输入输出参数

In Out Patameters In Dynamic Set DB2

我的 table 是 aaa (a char(5))

      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

我收到错误:

部署 [sss]A.ZZZ 运行 A.ZZZ - 部署开始。创建存储过程 returns SQLCODE:-104,SQLSTATE:42601。A.ZZZ:14:在“”之后发现意外标记“”。预期的标记可能包括:“S1 into cc using cID”.. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.69.56 An unexpected token “” was found following "".预期的标记可能包括:“S1 into cc using cID”.. SQLCODE=-104,SQLSTATE=42601,DRIVER=3.69.56 A.ZZZ - 部署失败。 A.ZZZ - 回滚成功完成。

多个问题。

  • S1 必须具有 STATEMENT 类型或不在 全部,但不声明为 VARCHAR.
  • print (cc) 根本不是一个有效的陈述。 如果您想获得一些调试输出,请阅读 DBMS_OUTPUT.PUT_LINE。 您从中调用例程的工具必须能够显示 消息缓冲区的内容。
  • 你的例程没有 return 游标到调用者/客户端。无需使用 DYNAMIC RESULT SETS 1 子句。这个问题并不严重。