【发布时间】:2011-11-22 21:57:26
【问题描述】:
我有一个函数,它接收一个查询作为参数(作为 clob 类型)并“选择”这个查询的行以返回。我需要使用dbms_sql,因为查询的大小大于 32kb (~150kb)。
我被困在获取结果的地方:
-- 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。
有什么建议吗?
【问题讨论】: