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