gpt4 book ai didi

oracle - 如何在 PL/SQL 过程中声明/分配变量给游标类型

转载 作者:行者123 更新时间:2023-12-03 03:29:53 25 4
gpt4 key购买 nike

我在存储过程(包内)中声明了两个游标。

procedure RECONCILE_CC_TRX (p_to_date in date,
p_nz_flag in varchar2,
p_Reconcile_Header_ID out NUMBER
) is

CURSOR LOADED_TRXS_AU IS
SELECT
CC_REC_LOAD_TRX_ID,
CC_REC_LOAD_HEADER_ID,
....

CURSOR LOADED_TRXS_NZ IS
SELECT
CC_REC_LOAD_TRX_ID,
CC_REC_LOAD_HEADER_ID,

两个游标之间的唯一区别是 where 子句。

我想要做的是根据上面传入的 p_nz_flag 打开这些游标之一。即:

  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_cursor 时出现编译错误。如果我将声明更改为:

  v_load_trx_cursor cursor;

我在声明点收到编译错误,指出“PLS-00201:必须声明标识符“光标”。

可以做我想做的事吗?归根结底,我只想根据传入的 p_nz_flag 参数迭代适当的游标。

谢谢

最佳答案

根据 p_nz_flag 的值,您似乎只想在代码中使用一个光标在这种情况下,相信最好在代码中动态创建 where 子句,然后使用 refcursor 返回查询的数据。

类似于此链接 Dynamic Query with Refcursor 上的示例 7-4 中给出的内容

希望有帮助

维沙德

关于oracle - 如何在 PL/SQL 过程中声明/分配变量给游标类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22926240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com