游标游标名称未处于准备状态

编程入门 行业动态 更新时间:2024-10-27 14:34:50
本文介绍了游标游标名称未处于准备状态的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我创建了用于选择的动态存储过程。我将通过传递参数,使用该通用查询执行多个select语句。

DECLARE DESC_CSR游标,并保留V_SQL; SET V_SELECT = ‘SELECT’|| SELECT_FIELDS || ’FROM’|| TABLE_NAME || ’WHERE’|| WHERE_CLAUSE || ’WITH UR’; 从V_SELECT中准备V_SQL; OPEN DESC_CSR;

我将通过以下值。

SELECT_FIELDS = B.COLUMN_A INTO HOST_VAR_A TABLE_NAME = TABLE_A内部联接TABLE_B B ON A.ROW_ID = B.ROW_ID WHERE_CLAUSE = A.COLUMN_B = HOST_VAR_B

执行此操作时,我得到光标DESC_CSR不在准备好的状态。 p>

如果我做错了任何人,请帮助我准备或纠正我。

解决方案

我使用了以下代码,并且工作正常。我可以使用Dynamic运行多个选择。

DECLARE DESC_CSR CURSOR HOLD FOR V_SQL; SET V_SELECT = ‘SELECT’|| SELECT_FIELDS || ’FROM’|| TABLE_NAME || ’WHERE’|| WHERE_CLAUSE || ’WITH UR’; 从V_SELECT中准备V_SQL; 使用HOST_VAR_B打开DESC_CSR; 读取DESC_CSR到HOST_VAR_A;

我通过了如下的parm。使用where子句HOST_VAR_B作为参数标记?并在OPEN处分配字段。

SELECT_FIELDS = B.COLUMN_A INTO HOST_VAR_A TABLE_NAME = TABLE_A内部联接TABLE_B B ON A.ROW_ID = B.ROW_ID WHERE_CLAUSE = A.COLUMN_B =?

I created Dynamic Stored procedure for select. I'm going to use this generic query for execute multiple select statement, by passing the parameter.

DECLARE DESC_CSR CURSOR WITH HOLD FOR V_SQL; SET V_SELECT = 'SELECT ' || SELECT_FIELDS || ' FROM ' || TABLE_NAME || ' WHERE ' || WHERE_CLAUSE || ' WITH UR'; PREPARE V_SQL FROM V_SELECT; OPEN DESC_CSR;

I will pass below values.

SELECT_FIELDS = B.COLUMN_A INTO HOST_VAR_A TABLE_NAME = TABLE_A A INNER JOIN TABLE_B B ON A.ROW_ID = B.ROW_ID WHERE_CLAUSE = A.COLUMN_B = HOST_VAR_B

When I did this I got "THE CURSOR DESC_CSR IS NOT IN A PREPARED STATE".

Could anyone please help me on how to PREPARE or correct me, if I'm doing it wrong.

解决方案

I used below code and it working fine. I was able to run multiple select's using Dynamic.

DECLARE DESC_CSR CURSOR WITH HOLD FOR V_SQL; SET V_SELECT = 'SELECT ' || SELECT_FIELDS || ' FROM ' || TABLE_NAME || ' WHERE ' || WHERE_CLAUSE || ' WITH UR'; PREPARE V_SQL FROM V_SELECT; OPEN DESC_CSR USING HOST_VAR_B; FETCH DESC_CSR INTO HOST_VAR_A;

I pass parm as below. using the where clause HOST_VAR_B as Parameter marker "?" and assigning the field at OPEN.

SELECT_FIELDS = B.COLUMN_A INTO HOST_VAR_A TABLE_NAME = TABLE_A A INNER JOIN TABLE_B B ON A.ROW_ID = B.ROW_ID WHERE_CLAUSE = A.COLUMN_B = ?

更多推荐

游标游标名称未处于准备状态

本文发布于:2023-11-06 07:40:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1563097.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:游标   状态   名称

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!