使用工具(DBeaver等等)调用package里的方法的时候,
每次都只有第一次调用的时候,package的function能正常执行。
其他时候都是直接返回一个-1,不执行是什么原因。
现在对策如下,有没有一劳永逸的方法,感觉是和每次的会话相关。这咋回事。
1.如果把代码中随便做一个无关紧要的log输出修改,就也能正常执行1次。
2.关掉工具,重新打开,就能正常执行1次。
使用工具(DBeaver等等)调用package里的方法的时候,
每次都只有第一次调用的时候,package的function能正常执行。
其他时候都是直接返回一个-1,不执行是什么原因。
现在对策如下,有没有一劳永逸的方法,感觉是和每次的会话相关。这咋回事。
1.如果把代码中随便做一个无关紧要的log输出修改,就也能正常执行1次。
2.关掉工具,重新打开,就能正常执行1次。
关注回答引用自GPT-4o,由博主小ᶻZ࿆编写,若还有疑问可评论或留言:
题主在使用DBeaver等工具调用Oracle Package中的方法时,遇到仅第一次调用时能正常执行,之后调用都会直接返回-1且未执行的情况。通过重启工具或修改无关代码后,调用又能执行一次,疑似与会话机制有关。
会话缓存机制
-1返回。建议在调用前增加会话刷新或清理步骤。DBMS_SESSION.RESET_PACKAGE以重置会话中包的状态。会话未提交或锁资源未释放
PROCEDURE或FUNCTION结束时加入COMMIT或ROLLBACK。日志写入或调试模式的使用
避免多次编译导致的状态变化
DBMS_SESSION.RESET_PACKAGE。如有帮助,题主可以帮忙采纳一下嘛,谢谢~