私は、パラメータを(clob型として)クエリを受け取り、返すためにこのクエリの行を '選択'する関数を持っています。クエリのサイズが32kb(〜150kb)を超えているため、dbms_sql
を使用する必要があります。大規模なクエリを実行し、Oracleで行を返す
私は結果にフェッチの時点で立ち往生しています:
-- execute immediate style (does not work with clob):
EXECUTE IMMEDIATE large_query BULK COLLECT INTO V_TAB ;
-- dbms_sql style:
v_upperbound := CEIL(DBMS_LOB.GETLENGTH(large_query)/256);
FOR i IN 1..v_upperbound
LOOP
v_sql(i) := DBMS_LOB.SUBSTR(large_query,256,((i-1)*256)+1);
END LOOP;
v_cur := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(v_cur, v_sql, 1, v_upperbound, FALSE, DBMS_SQL.NATIVE);
v_ret := DBMS_SQL.EXECUTE(v_cur);
-- NOW WHAT??
私は、Oracle 9iの/ 10gでので、私はdbms_slq.to_refcursor
を使用することはできません。
提案がありますか?