oracle 動態語句 遊標,如何在Oracle中描述與動態SQL關聯的引用遊標?

這是我第一次(編輯)的stackoverflow問題,所以請忍受我。如何在Oracle中描述與動態SQL關聯的引用遊標?

在Oracle 11g中,我有必要描述/詢問從過程調用在另一個數據庫在DBLINK,在實際的SQL並不一定爲「明確的」返回的參考指針的基礎列,但有時會動態生成。

例如:

declare

v_ref_cur sys_refcursor;

v_cur_num number;

v_col_count number;

v_col_table dbms_sql.desc_tab3;

begin

[email protected](v_ref_cur, 'myvalue');

v_cur_num := dbms_sql.to_cursor_number(v_ref_cur);

dbms_sql.describe_columns3(v_cur_num, v_col_count, v_col_table);

...

end

如果MYPROC()其他數據庫上有一個像 「明確的」 SQL語句:

open cursor for select * from foo where bar = myParam;

光標轉換和描述(仍然)工作得很好 - 我可以確定過程返回的列名,類型,長度等。

,但如果MYPROC()其他數據庫上涉及動態SQL,如:

v_sql := 'select * from foo where bar = ''' || myParam || '''';

open cursor for v_sql;

試圖調用dbms_sql.to_cursor_number()時,我得到一個ORA-01001無效的遊標的錯誤。

有沒有一種方法來轉換/描述從遠程過程調用的動態SQL派生的引用遊標?如果是這樣,怎麼樣?如果不是,爲什麼不呢?

感謝您的任何/所有幫助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值