网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > PL/SQL > Oracle-SQL长度限制  

Oracle-SQL长度限制

2005-12-26  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏

    最近遇见一个ORA-01795: maximum number of expressions in a list is 1000 错误,才知道In-list有1000个元素的限制;可以使用array bind或者temporary table解决,而且还能绑定变量。[Limit and conversion very long IN list : WHERE x IN ( ,,, ...) ]

网管u家u.bitsCN.com

    再想到SQL的长度是否在SQLPLUS里面还有其他的限制? 网管联盟bitsCN@com

    Logical Database Limits 网管网www_bitscn_com

    SQL Statement Length
     Maximum length of statements
     64 K maximum; particular tools may impose lower limits

网管网www.bitscn.com

    9i的文档写的最大64K,其实不正确。 网管朋友网www_bitscn_net

    在10g的文档中作了修改 Logical Database Limits

网管有家bitscn.net

    The limit on how long a SQL statement can be depends on many factors, including database configuration, disk space, and memory

网管下载dl.bitscn.com

    仔细想想,我们数据库中 package 几十K有很多,当初都是用sqlplus执行创建的;sqlpplus对日常执行的SQL因该不会有长度限制。 网管下载dl.bitscn.com

    先测试一下使用DBMS_SQL执行很长的SQL语句。

网管论坛bbs_bitsCN_com

    SQL> declare
    2 l_stmt dbms_sql.varchar2s;
    l_cursor integer default dbms_sql.open_cursor;
    l_rows number default 0;
    3 4 5 l_length number := 0;
    6 begin
    7 l_stmt(1) := 'select 1 c1';
    8 for i in 2 .. 15000
    9 loop
    10 l_stmt(i) := ', 1 c' || i;
    11 end loop;
    12 l_stmt(15000) := 'from dual';
    13 for i in l_stmt.first .. l_stmt.last
    14 loop
    15 l_length := l_length + length(l_stmt(i));
    16 end loop;
    17 dbms_output.put_line( 'length = ' || l_length );
    18 dbms_sql.parse( c => l_cursor,
    19 statement => l_stmt,
    20 lb => l_stmt.first,

网管有家www.bitscn.net

    21 ub => l_stmt.last,
    22 lfflg => TRUE,
    23 language_flag => dbms_sql.native );
    25 l_rows := dbms_sql.execute(l_cursor);
    26 dbms_sql.close_cursor( l_cursor );
    27 end;
    28 /
    length = 138898 网管u家bitscn.net

    PL/SQL procedure successfully completed. 网管网www_bitscn_com

    通过dbms_sql.varchar2s数组,可以执行很长的SQL

网管u家u.bitsCN.com

    再将如上pl/sql产生的SQL使用dbms_output输出longSQL.sql. 网管网www.bitscn.com

    SQL> host ls -l longSQL.sql
    -rw-r--r-- 1 oracle dba 1215082 Dec 4 05:19 longSQL.sql 网管u家u.bitsCN.com

    SQL> host head longSQL.sql
    select 1 c1
    , 1 c2
    ...........................

网管u家www.bitscn.net

    SQL> host tail longSQL.sql
    ................
    , 1 c14999
    , 1 c15000
    from dual; 网管有家bitscn.net

    这个1M的SQL在sqlplus里完全可以执行。看来,oracle完全支持很长的SQL语句;但该sql会占用很多share pool空间,因此不提倡经常执行。

网管联盟bitsCN_com

    SQL> select sql_text, SHARABLE_MEM,PERSISTENT_MEM,RUNTIME_MEM from v$sql where sql_text like '%, 1 c2%'; 中国网管联盟bitsCN.com

    SQL_TEXT
    --------------------------------------------------------------------------
    SHARABLE_MEM PERSISTENT_MEM RUNTIME_MEM
    ------------ -------------- -----------
    select 1 c1 , 1 c2 , 1 c3 , 1 c4 , 1 c5 , 1 c6 , 1 c7 , 1 c8 , 1 c9 , 1 c10 , 1
    c11 , 1 c12 , 1 c13 , 1 c14 , 1 c15 , 1 c16 , 1 c17 , 1 c18 , 1 c19 , 1 , 1 .............................................................................................
    1978774 780448 241252

网管bitscn_com

TAGs限制   长度   SQL   执行   select1c1   l_cursor   length    
 上一篇:精妙SQL语句介绍   下一篇:Oracle的表序列小议
相关文章列表
Oracle-SQL长度限制 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.PL/SQL - 嵌套游标 cursor-PLSQL
2.用一个实例讲解Oracle数据库的PL/SQL语句
3.PL/SQL----触发器-PLSQL
4.mysql存储过程写法—动态参数运用-PLSQL
5.PL/SQL Developer导出分区索引脚本-PLSQL
6.PL/SQL collection— table() 函数-PLSQL
7.SQL Server 2005 中的架构与用户-PLSQL
8.Oracle数据库维护常用SQL语句集合(2)-P
9.Oracle数据库维护常用SQL语句集合(3)-P
10.再议SQL Server临时表和表变量-PLSQL
最新推荐文章:
1.与数据库无关的处理放到数据库以外来实现
2.Oracle 10g第2版新特性之SQL和PL/SQL
3.通过PL/SQL访问Web Services
4.菜鸟学oracle - 用PL/SQL画直方图
5.重新编译PLSQL中无效对象或指定对象
6.Oracle高级技巧
7.深入了解Oracle 10g新的多重集运算符
8.在SQL中删除重复记录(多种方法)
9.Oracle:PL/SQL中怎样使用Array
10.数据库手册:速查Oracle函数列表
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■