ORACLE中動態SQL語句過長


通過動態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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM