【发布时间】:2021-08-17 21:15:10
【问题描述】:
我想打开一个动态游标变量。
CREATE OR REPLACE PROCEDURE TTT ()
P1: BEGIN
Declare cID char(5) ;
declare c1 cursor for s1 ;
declare stmt varchar(1000) ;
set cid = 'a' ;
Set stmt = 'select * from aaa where a = ?' ;
prePare s1 from stmt ;
open c1 using cid ;
END P1
我得到错误:
A.TTT - 部署开始。 创建存储过程返回 SQLCODE:-104,SQLSTATE:42601。 A.TTT:6:在“”之后发现了一个意外的标记“”。预期的标记可能包括:“”.. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.69.56 在“”之后发现了一个意外的标记“”。预期的标记可能包括:“”.. SQLCODE=-104, SQLSTATE=42601, DRIVER=3.69.56 A.TTT - 部署失败。 A.TTT - 回滚成功完成。
【问题讨论】:
-
首先在变量中添加一个冒号:
prePare s1 from :stmt ; -
db2中没有“动态游标变量”的意思。您在示例中从 SP 返回一个结果集,没有任何变量。还有另一种使用基于Cursor types 的结果集的技术,其中使用了游标变量。
-
@ThomasG 这是一个错误的建议。 Db2 SQL/PL 不支持这样的语法。
-
请不要多次问同一个问题。 In Out Patameters In Dynamic Set DB2您可以编辑您的问题并添加其他信息(如果有)。
标签: db2