我们有一个包内的oracle程序。当我们从.NET(Windows窗体)调用该过程时,它会给出操作超时错误 从屏幕上看到此消息“操作超时错误”后,当我转到SqlDeveloper并编译所有包后再编译它们,程序工作得非常快,我可以在5秒内检索数据。 你能告诉别人怎么解决这个问题,根本原因是什么?
答案 0 :(得分:0)
你应该准确地分析为什么包在执行之前变得无效并且需要编译,并且要么消除代码导致失效,要么就像之前的回答说在执行编译之前执行编译。
当您更改某些依赖对象(在某些加载期间交换表名或同义词,更改表,动态删除和创建程序包所依赖的对象)时,程序包可能会失效。这两个主题可以帮助您:What Situations Cause Oracle Packages to Become Invalid?和When does an Oracle Package Specification become INVALID如果您能够消除程序包失效,那么最好不要在每次运行程序之前进行编译。
另一个原因是来自.NET的调用过程不重新编译包可以是驱动程序。几年前我遇到过这样的问题并且记得改变了司机的帮助。但我不记得我们是否改为有管理或无人驾驶的司机。