ORA-24338: 未执行语句句柄
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)
------解决方案--------------------
还有一个可能就是在你OPEN p_change FOR v_sql; 之前就出错了,导致你返回的游标 p_change未打开。
你看看你 v_sql变量的长度是否足够长,当你参数p_branchid输入多个 'xxx'时,是否会导致 v_sql变量的长度不够,
然后就报错了,就没有执行你OPEN p_change FOR v_sql; 最好就报此错误。