zoukankan      html  css  js  c++  java
  • ORA01795: maximum number of expressions in a list is 1000

    Load Test的时候发现这么如下这个错误....
     

    ORA-01795: maximum number of expressions in a list is 1000

    导致这个问题的原因是因为SQL语句中用到了IN字句,结果IN中的元素个数超过了1000导致了这个错误。如下所示...

    declare 
    l_cnt pls_integer;
    l_list varchar2(32767);
    begin
    select listagg(level, ',') WITHIN group(order by level)
    into l_list
    from dual connect by level<=1000;

    execute immediate 'select count(*) from user_objects where object_id in (' || l_list || ')'
    into l_cnt;
    end;
    /


    这个例子中in中元素个数是1000, 可以正常运行,但是下面这个例子就会报错,因为IN中的元素个数超过了1000...

    declare 
    l_cnt pls_integer;
    l_list varchar2(32767);
    begin
    select listagg(level, ',') WITHIN group(order by level)
    into l_list
    from dual connect by level<=1001;

    execute immediate 'select count(*) from user_objects where object_id in (' || l_list || ')'
    into l_cnt;
    end;
    /


    解决这个问题的方法是在程序中将一个IN改成多个IN, 或者把IN List 改成一个SELECT语句,把IN List中的元素放到一个Nested Table中。
     



  • 相关阅读:
    C#中using的使用方法
    Silverlight性能优化纪要原作者Jossef Goldberg
    ASP.NET 获取客户端IP地址
    Silverlight性能优化【转】
    WCF 异常集
    js 其他事件
    ajax等待层
    DEVEXPRESS 破解方法
    类型“Microsoft.Office.Interop.Word.ApplicationClass”未定义构造函数
    js表单相关事件
  • 原文地址:https://www.cnblogs.com/fangwenyu/p/2219870.html
Copyright © 2011-2022 走看看