我在packages中调用的procedure, 
  PROCEDURE PoToExcel
  (VSYSNO IN varchar2,
    VCURSOR  OUT T_CURSOR
  ) IS
    VToExcel T_CURSOR;
    VSTR LONG;
  BEGIN
    VSTR := 'SELECT ... WHERE POH.SYSNO IN ('||VSYSNO||')' 
  OPEN VTOEXCEL FOR VSTR;
   VCURSOR:=VTOEXCEL;
  END;
--VSTR有很长(可能有上10万个字符), 会出现ORA-01795ORA-01795: maximum number of expressions in a list is 1000 错
弄了好久都没法搞定, 请大家帮帮我. 感谢!

解决方案 »

  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.意思很明显,Oracle 的 IN 子句中最多只能有 254 个字段或者1000个表达式,你提供的参数中可能有多于1000项,这种情况下,就不能再用IN来实现了。考虑建立临时表,然后把这些项保存在表中,在语句中用子查询来实现不吧