为什么我不能执行存储过程? (OracleException被抓住了)

时间:2011-01-31 13:55:42

标签: c# oracle stored-procedures ora-06550

这是连接Oracle数据库的代码。它在最后一行失败:dbDataAdapter.Fill(dtResult);

private object Execute(CommandType commandType, Common.DATA.SqlCommonExecutionType sqlCommonExecutionType, DbCommand dbCommand)

dbc = dbConnection.CreateCommand();
dbc.CommandType = commandType;
dbc.CommandText = dbCommand.CommandText;
dbc.CommandTimeout = 3600;

if (dbc.Connection.State == ConnectionState.Closed)
   dbc.Connection.Open();

DataTable dtResult = new DataTable();
DbDataAdapter dbDataAdapter = dbProviderFactory.CreateDataAdapter();
dbDataAdapter.SelectCommand = dbc;
dbDataAdapter.Fill(dtResult);

错误是“OracleRxception被捕获:

ORA-06550: line 1, column 7:
PLS-00201: identifier 'RESETUNFINISHEDJOBS' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

我可以通过Oracle SQL * Plus访问数据库。为什么我收到此错误?数据库端缺少存储过程还是我的代码?有关如何解决这个问题的想法吗?

2 个答案:

答案 0 :(得分:4)

您可能需要在commandtext

中定义schema.package.storedprocedure(或schema.table

而不是:

select * from table

使用:

select * from schema.table

......同样适用于函数/存储过程

如果commandText只包含存储过程:

storedprocedurename

尝试:

schema.package.storedprocedurename

答案 1 :(得分:1)

此外,您可能希望使用公共同义词。它通常是为对象创建公共同义词而不是显式使用所有者/模式方法的更好方法。这些对象的用户不需要担心使用这种方法的schema.someObject表示法。