今天写了几个SQL 由于用户要自由抽取数据功能,所以我偷懒给他自由抽取的ID拿来IN
结果出来一个“ORA-01036: 非法的变量名/编号”
我少量的ID正常通过~海量的就error了
查阅相关资料 SQL支持6W多字节 我的大约有3W
迷惑~有知道的兄弟告之下~~谢过~

解决方案 »

  1.   

    ORA-01795 maximum number of expressions in a list is 1000Cause: More than 254 columns or expressions were specified in a list.Action: Remove some of the expressions from the list.Limit and conversion very long IN list : WHERE x IN ( ,,, ...) 有可能是这个问题
      

  2.   

    就是1楼的问题
    WHERE x IN ( ,,, ...) 
    -----------------------------------
    这个问题能解决么~~
      

  3.   

    in里面没有错 我将SQL放草pl/sql运行 就报1楼的错 我削减报警处(红光标)ID后 能正常运行
    呃~~
    真麻烦 随机数有点烦 难道拆分SQL为多个么?结果集在组装?
      

  4.   

    枚举值的数量不能超过1000个
    可以考虑把多个变量连成一个长字符串,然后用
    instr()>0 判断
    没做测试,应该可以
      

  5.   

    in 后面不能超过壹千,否则报错,建议用sql取你的in值,或者分开写 in (1...999) or in (1000...1999)
      

  6.   

    查看下变量是不是包含了oracle非法命名!
      

  7.   

    in (...)
    括号里的值不能超过1000个
    如果超过1000个oracle会报错
    建议lz先把括号里的值放到一个中间表中,然后
    in (select value from 中间表)