关于存储过程的编译问题
想写一个程序C#程序,通过该程序在Oracle数据库中创建一个存储过程,然后再在C#程序中调用该存储过程,然而调用的时候却出现异常,经检查发现是存储过程没有编译的原因。
现在我想知道,有没有什么办法在程序中编译存储过程?
------解决方案--------------------我感觉是这个存储过程使用代码生成的,而生成完后没有commit。因为你的事务一直连接数据库,有点类似于在oracle中使用OLD:不能修改本表的数据一样
------解决方案--------------------你在创建完存储过程后手动提交下试试,还有是不是你的存储过程中有insert的语句啊
------解决方案--------------------
存储过程没有编译的话,数据库中怎么会生成它?而且还是invalid状态?
------解决方案--------------------可以在c#中调用ORACLE自带的脚本utlrp.sql,编译无效的对象。
也可以自己写脚本。
另附上tianlesoftware的博客:http://blog.csdn.net/tianlesoftware/article/details/7412555
------解决方案--------------------如果你的过程真没有问题的话,
你就再alter procedure [procedure_name] compile;
重编译后再调用