【发布时间】:2019-04-08 14:08:49
【问题描述】:
下面的代码有什么问题?我正在尝试在 DB2 的存储过程中执行动态查询。我的程序正在创建中
CREATE PROCEDURE get_users( in offsetValue integer,
in sortCol varchar(20)
)
SPECIFIC get_users
LANGUAGE SQL
Re: BEGIN
DECLARE SELECT_STATEMENT VARCHAR(8000);
DECLARE SQL_STATEMENT STATEMENT;
DECLARE c_emp CURSOR FOR SQL_STATEMENT;
set SELECT_STATEMENT = 'select * from users;';
PREPARE SQL_STATEMENT FROM SELECT_STATEMENT;
EXECUTE SQL_STATEMENT;
open c_emp;
END Re
但是当我使用
调用程序时call get_users(3, 'email_id');
我收到以下错误
SQL Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=;;select * from users;END-OF-STATEMENT, DRIVER=4.24.92
可能出了什么问题?
【问题讨论】:
-
我假设您需要一个光标来读取数据。
-
我创建了一个游标,稍后我在执行该行后打开该游标。我应该如何使用游标来读取数据?
-
执行 FETCH 而不是 EXECUTE? (打开、获取、关闭。)
-
之前我使用游标执行了相同的操作。但这不是动态查询。只有当我引入动态查询时,我才会遇到这个问题。
-
在
select * from users之后直接删除;?
标签: sql stored-procedures plsql db2 dynamicquery