有很多的时候各种原因都会引起这个问题,现在说一个比较小众的原因。
V_QUERY_SQL = ‘SELECT COUNT(DISTINCT (B.BATCH_ID)) FROM T_DD_RES T
JOIN T_DD_REQ Q
ON T.ID_DD_REQ = Q.ID
JOIN T_DD_BATCH B
ON T.BATCH_ID = B.BATCH_ID WHERE T.INSERT_TIME >= TRUNC(PI_DATE)
AND T.INSERT_TIME < TRUNC(PI_DATE) + 1
AND Q.REQUEST_DATE >= TRUNC(PI_DATE)
AND Q.REQUEST_DATE < TRUNC(PI_DATE) + 1
AND B.CDATE >= TRUNC(PI_DATE)
AND B.CDATE < TRUNC(PI_DATE) + 1’
OPEN PO_EXPCUR FOR V_QUERY_SQL USING …
存储过程中的SQL如上边代码,在调用的时候抛出了ORA-01006: 绑定变量不存在的异常,查看SQL语句的时候,确定所有的变量都是存在的。但是为什么会抛出这个异常?
最终找到原因,因为SQL语句返回的是一个整型的值,而我们这里却把这个值给到了游标,所以抛出了这个异常。把游标相关语句改为如下SQL就一切正常了。
EXECUTE IMMEDIATE V_QUERY_SQL INTO PO_AMOUNT USING…