Oracle
具有動態 sql 的 Oracle 強引用游標
我正在使用 Oracle 10g。我在儲存過程中有一個查詢,它從表中選擇整行。目前它返回一個強類型引用游標(tablename%rowtype)。現在我必須在這個查詢中添加一些動態 WHERE 子句,但是動態 SQL 不支持強引用游標。之前已經在 SO 上詢問過。我的問題是:有解決方法嗎?使用某種包裝器或轉換或 DBMS 魔法將弱游標轉換為強游標?我可以保證結果與表行類型匹配。
可能有更好的方法來實現您的基本目標,但是如果您真的希望將動態 SQL 中的值轉換為強類型的 refcursor,我想您可以執行以下操作:
create table TESTTABLE(TESTID number not null); create global temporary table TEMPTESTTABEL(TESTID number not null); create or replace procedure testprocedure is type testtablerefcursor is ref cursor return TESTTABLE%rowtype; type testtabletable is table of TESTTABLE%rowtype; mycursor testtablerefcursor; mysyscursor SYS_REFCURSOR; mytesttable testtabletable; begin open mysyscursor for 'select * from TESTTABLE'; fetch mysyscursor bulk collect into mytesttable; close mysyscursor; forall i in mytesttable.first..mytesttable.last insert into TEMPTESTTABEL values mytesttable(i); open mycursor for select testid from TEMPTESTTABEL; end; /