通過動態sql返回游標的存儲過程實例如下如下
CREATE OR REPLACE PROCEDURE demo(REF_A OUT sys_refcursor) AS s_sql varchar2(50); BEGIN s_sql:='select sysdate from dual';--初始化動態sql open REF_A for s_sql; ---返回游標 END;
我們都知道varchar2的最大長度是4000,如果動態的sql語句超過了4000了怎么辦?解決方法如下
CREATE OR REPLACE PROCEDURE demo(REF_A OUT sys_refcursor) AS s_sql clob;--將動態sq語句定義為clob類型 BEGIN s_sql:='select sysdate from dual';--初始化動態sql open REF_A for to_char(s_sql); ---將sql轉為字符串后執行,返回游標 END;
