动态设置 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
子句。这个问题并不严重。
我的 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
子句。这个问题并不严重。