关于存储过程的编译问题 想写一个程序C#程序,通过该程序在Oracle数据库中创建一个存储过程,然后再在C#程序中调用该存储过程,然而调用的时候却出现异常,经检查发现是存储过程没有编译的原因。现在我想知道,有没有什么办法在程序中编译存储过程? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我感觉是这个存储过程使用代码生成的,而生成完后没有commit。因为你的事务一直连接数据库,有点类似于在oracle中使用OLD:不能修改本表的数据一样 调用成功,数据库中也已经生成了存储过程,只不过存储过程没有编译,处于Invilid状态,所以调用时会失败。如果手动将生成的存储过程编译,则调用成功。现在想将编译这步也用程序自动完成。另外,有谁能解释下Oracle的存储过程为什么要编译?作用是什么? 你在创建完存储过程后手动提交下试试,还有是不是你的存储过程中有insert的语句啊 存储过程没有编译的话,数据库中怎么会生成它?而且还是invalid状态? 存储过程没有编译的话,数据库中怎么会生成它?而且还是invalid状态?我对存储过程的编译过程不太明白,下面是我创建的语句:Connection=new OracleConnection(this.ConnectString());Connection.Open(); OracleCommand cmd = Connection.CreateCommand();cmd.CommandType=CommandType.Text;cmd.CommandText=al.VRCONTENT; try { cmd.ExecuteNonQuery();} catch(Exception e) { throw e;} finally { Connection.Close();} 可以在c#中调用ORACLE自带的脚本utlrp.sql,编译无效的对象。也可以自己写脚本。另附上tianlesoftware的博客:http://blog.csdn.net/tianlesoftware/article/details/7412555 如果你的过程真没有问题的话,你就再alter procedure [procedure_name] compile;重编译后再调用 初学oracle存储过程遇到的问题 9I数据库迁移到10G后同样的查询语句为什么执行时间变慢了很多。 linux(redhat AS4.5)下安装oracle到最后一步时出现"read error"错误?(急,在线等) 请问:关于SQL执行顺序? sql问题,求教了 请教多表查询语句写法? 该日期语句 新手请教 清空数据库语句 求救!!关与我的饭碗问题 c#读取oracle中blob图像 oracle查询出重复数据显示为空算出小计和总计的oracle语句 关于Oracle权限问题
如果手动将生成的存储过程编译,则调用成功。
现在想将编译这步也用程序自动完成。另外,有谁能解释下Oracle的存储过程为什么要编译?作用是什么?
存储过程没有编译的话,数据库中怎么会生成它?而且还是invalid状态?
存储过程没有编译的话,数据库中怎么会生成它?而且还是invalid状态?我对存储过程的编译过程不太明白,下面是我创建的语句:Connection=new OracleConnection(this.ConnectString());
Connection.Open();
OracleCommand cmd = Connection.CreateCommand();
cmd.CommandType=CommandType.Text;
cmd.CommandText=al.VRCONTENT;
try {
cmd.ExecuteNonQuery();
} catch(Exception e) {
throw e;
} finally {
Connection.Close();
}
也可以自己写脚本。
另附上tianlesoftware的博客:http://blog.csdn.net/tianlesoftware/article/details/7412555
你就再alter procedure [procedure_name] compile;
重编译后再调用