Oracle的varchar2类型最大长度为4000,所有,如果动态sql语句过长,就没有办法在一个varchar2变量中存储整个语句,导致execute immediate本地动态sql方式无法使用。但现实中,有些时候确实会碰到超长的动态sql语句,怎么办呢?解决办法就是,使用dbms_sql包,用dbms_sql.varchar2s数组来保存拼接的sql语句,然后执行。

declare
l_sql dbms_sql.varchar2s;
l_cursor number;
l_rows number;
begin
l_cursor := dbms_sql.open_cursor;

l_sql(1) :='create table cols(';
for i in 2..1000 loop
l_sql(i) := 'a'||to_char(i) || ' int,';
end loop;
l_sql(1000) := 'last int)';

dbms_sql.parse(c => l_cursor,
statement => l_sql,
lb => l_sql.first,
ub => l_sql.last,
lfflg => TRUE,
language_flag => dbms_sql.native);

l_rows := dbms_sql.execute(l_cursor);

dbms_sql.close_cursor( l_cursor );
end;
/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/193161/viewspace-50287/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/193161/viewspace-50287/

Oracle中如何解决动态SQL语句过长的问题相关推荐

  1. oracle中的判断大小,sql语句判断大小

    如何用sql语句查看某个数据库中的表的大小 --读取库中的所有表名 select name from sysobjects where xtype='u' --读取指定表的所有列名 select na ...

  2. oracle中删除表字段 sql语句怎么写,oracle使用sql语句增加字段示例(sql删除字段语句)...

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); 修改字段的语法:alter ...

  3. 如何解决动态查询语句太长,大于数据库字符的最大长度

    上周,在写sql server2005数据库存储过程的时候,用到了动态查询语句,但是由于语句太长,定义的变量最长为varchar(8000),在字符串大于8000的时候,数据库会做截断,进而在执行动态 ...

  4. Oracle中5个核心Sql语句的基本构造:Select、Insert、Update、Delete和Merge

    Sql语言提供了很多不同的选择来得到同样的结果集,关键是需要搞清楚在不同的使用场景下哪种构造是最高效的. 1.Select语句 Select语句用来从一个表中,或者其他数据库对象中提取数据. sele ...

  5. oracle中执行动态sql语句吗,oracle中有没有可动态执行sql语句的函数

    oracle中有没有可动态执行sql语句的函数 关注:233  答案:2  手机版 解决时间 2021-03-05 15:53 提问者祗剩寂寞 2021-03-04 22:38 oracle中有没有可 ...

  6. Oracle PL/SQL进阶编程(第十五弹:动态SQL语句)

    理解动态SQL语句 动态SQL语句基础 动态SQL语句不仅是指SQL语句是动态拼接而成的,更主要的是SQL语句所使用的对象也是运行时期才创建的.出现这种功能跟PL/SQL本身的早起绑定特性有关,早PL ...

  7. oracle 带有变量的语句_Oracle 动态SQL语句(2)之含变量的WHERE语句与日期变量

    在 Oracle 动态SQL语句(1)中提到基本动态SQL语句书写,但在写动态SQL语句时特别要注意日期型变量和WHERE语句的编写. 如下代码: 1.注意在执行动态SQL语句时,execute im ...

  8. 如何使用动态SQL语句?

    这里只介绍动态SQL的使用.关于动态SQL语句的语法,参见:http://blog.csdn.net/chiclewu/article/details/16097133 1.什么是时候需要使用动态SQ ...

  9. oracle表名使用变量名,oracle 中动态sql语句,表名为变量,怎么解?

    如果你用的是 Oracle 8i 及以上的版本,那简单,在过程中用 execute immediate sql_str 就行, sql_str 是一个拼凑的 SQL 语句,但这个动态语句中带参数,或 ...

最新文章

  1. 微信小程序 在使用wx.request时显示加载中
  2. 从小乡村走出的985高校博导坦言:读书这条路最简单!
  3. C语言的特点与执行程序基本步骤
  4. .net 返回datatable显示sql列名_3汇总分析-SQL
  5. python【蓝桥杯vip练习题库】ADV-235阶乘差
  6. ASP.NET Core 中文文档 第三章 原理(12)托管
  7. 数据表格+弹出层的综合案例
  8. DICOM文件格式与编程(转)
  9. openresty 前端开发入门四之Redis篇
  10. 2013蓝桥杯-B-省赛-七、错误票据
  11. 新浪微博爬虫设计(Python版)
  12. 计算机存储数字,计算机是如何存储数字的
  13. linux强制关机启动后是白屏,解决安装Ubuntu后,启动出现屏幕空白(全黑,无内容)...
  14. idea实现抽象类的所有抽象方法_父类子类抽象类,super final 重写方法,搞懂继承中复杂的知识点
  15. 你没听过的IT技术解读,能秒懂的都是老司机...
  16. 关于概率性事件的产品性能和客户体验讨论
  17. Hadoop安装部署的三种模式总结
  18. Linux内核配置之Kconfig
  19. 不同行业本地SEO和地域性SEO技巧
  20. MNIST | 基于k-means和KNN的0-9数字手写体识别

热门文章

  1. win7 卸载IE10
  2. PHP初级教程------------------(5)
  3. linux云计算架构师,springcloud视频教程
  4. pip与虚拟环境相关操作
  5. mysql支不支持fulljoin_MySQL5中是否可以进行完整外连接查询(full join)?解决方法
  6. bootstrap: 初次使用bootstrap框架
  7. Dynamic Filter Networks
  8. libsvm matlab 3.18下载,libsvm-3.17 最新的从官方网站下载的 工具箱 matlab 238万源代码下载- www.pudn.com...
  9. 通过AJAX获取数据列表
  10. 【达梦数据库】备份恢复后要执行两个sql语句