Oracle 如何在PL/SQL过程中声明/分配变量给游标类型
我在一个存储过程(在一个包中)中声明了两个游标 两个游标之间的唯一区别是where子句 我想做的是根据上面传递的p_nz_标志打开其中一个游标。即:Oracle 如何在PL/SQL过程中声明/分配变量给游标类型,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,我在一个存储过程(在一个包中)中声明了两个游标 两个游标之间的唯一区别是where子句 我想做的是根据上面传递的p_nz_标志打开其中一个游标。即: IF NVL(p_nz_flag, 'F') = 'F' THEN v_load_trx_cursor := LOADED_TRXS_AU; ELSE v_load_trx_cursor := LOADED_TRXS_NZ; END IF; FOR bitem IN v_load_trx_cursor LOOP
IF NVL(p_nz_flag, 'F') = 'F' THEN
v_load_trx_cursor := LOADED_TRXS_AU;
ELSE
v_load_trx_cursor := LOADED_TRXS_NZ;
END IF;
FOR bitem IN v_load_trx_cursor LOOP
...
我最初的想法是声明一个变量并给它分配适当的游标,但是,我无法用这个来编译过程。例如,我试过:
v_load_trx_cursor sys_refcursor;
但我在分配“PLS-00382:表达式的类型错误”的v_load_trx_游标时出现编译错误。如果我将我的声明更改为:
v_load_trx_cursor cursor;
我在声明点得到编译错误,声明“PLS-00201:必须声明标识符‘游标’”
是否可以执行我想执行的操作?在一天结束时,我只想根据传入的p_nz_flag参数迭代相应的游标
谢谢根据
p\u nz\u标志的值,您似乎只想在代码中使用一个光标
在这种情况下,最好在代码中动态生成where子句,然后使用refcursor返回查询数据
类似于示例7-4中给出的链接
希望能有帮助
Vishad如果你能按照@Vishad的建议做,即将
p_nz_flag
作为单个游标的参数,我会这样做。否则你可以将查询放入字符串中,并使用打开游标进行“查询”
语法。
v_load_trx_cursor cursor;
Hi if your whole work for doing this procedure is just to populate the appropriate cursor i think this code may help you.
CREATE OR REPLACE PROCEDURE av_nst_cursor(
flag_in IN VARCHAR2,
av_cur OUT sys_refcursor)
AS
BEGIN
IF flag_in = 'Y' THEN
OPEN av_cur FOR SELECT Query;
ELSE
OPEN av_cur FOR SELECT query;
END IF;
END;