如何解决如何将 SQL 传递给在 DB2 中以字符串形式出现的 Cursor?
我想将 sql 作为字符串作为输入传递给我的存储过程,而我的存储过程会将这个 sql 作为字符串传递给游标并提供输出。但是 Cursor 不接受 sql 作为字符串,我们需要准备 sql 语句,然后将其传递给 Cursor。我无法使那部分工作。请在此处找到我的示例代码:
Create Procedure abc(IN stmt VARCHAR(500))
SPECIFIC abc
LANGUAGE sql
DYNAMIC RESULT SETS 1
Re: BEGIN
DECLARE Instmt VARCHAR(500)
PREPARE Instmt FROM stmt;
EXECUTE Instmt;
DECLARE v_cur CURSOR WITH RETURN FOR Instmt;
OPEN v_cur;
END Re
--call abc('select ename,sal from emp')
它给了我一个错误,即 Cursor 期待一个 sql 语句。所以或多或少我无法正确准备 sql 以将其提供给 CURSOR。 错误信息: sql0104N “在“”之后找到了预期的标记“”。预期的标记可能包括:“”
请告诉我如何让它工作。
解决方法
试试这个
--#SET TERMINATOR @
CREATE OR REPLACE PROCEDURE TEST_PROC(IN stmt VARCHAR(500))
SPECIFIC TEST_PROC
LANGUAGE SQL
DYNAMIC RESULT SETS 1
BEGIN
DECLARE test_cur CURSOR WITH RETURN TO CALLER FOR test_stmt;
PREPARE test_stmt FROM stmt;
OPEN test_cur;
END@
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。