v_sql :=           
           'SELECT * FROM PAYROLLSALARYCHANGE WHERE BRANCH_ID in ' ||  p_branchid || ' AND BATCH_NUMBER = (SELECT DISTINCT BATCH_NUMBER FROM PAYROLLSTANDARDSETUP WHERE CREATION_DATE = (SELECT MAX(CREATION_DATE) FROM PAYROLLSTANDARDSETUP)) ORDER BY EMPLOYEE_NUMBER,DIVISION_NAME,BRANCH_NAME,PERSONNEL_TYPE_NAME,GRADE_NAME';
         OPEN p_change          
          FOR v_sql;有个存储过程的错误,其中p_branchid 是形如('xxx', 'xxx', ...),当传入的参数只有几个的时候没报错误,当传入几十个'xxx'的时候去报错(ORA-24338: 未执行语句句柄),求教? p_branchid    IN       VARCHAR2 是个输入参数
 p_change      OUT      c_change 是游标,我输出的时候已经打开了( OPEN p_change)

解决方案 »

  1.   

    还有一个可能就是在你OPEN p_change FOR v_sql; 之前就出错了,导致你返回的游标 p_change未打开。
    你看看你 v_sql变量的长度是否足够长,当你参数p_branchid输入多个 'xxx'时,是否会导致 v_sql变量的长度不够,
    然后就报错了,就没有执行你OPEN p_change FOR v_sql; 最好就报此错误。
      

  2.   

    原来是v_sql变量太短了,谢谢了!