这是连接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访问数据库。为什么我收到此错误?数据库端缺少存储过程还是我的代码?有关如何解决这个问题的想法吗?
答案 0 :(得分:4)
您可能需要在commandtext
中定义schema.package.storedprocedure
(或schema.table
)
而不是:
select * from table
使用:
select * from schema.table
......同样适用于函数/存储过程
如果commandText只包含存储过程:
storedprocedurename
尝试:
schema.package.storedprocedurename
答案 1 :(得分:1)
此外,您可能希望使用公共同义词。它通常是为对象创建公共同义词而不是显式使用所有者/模式方法的更好方法。这些对象的用户不需要担心使用这种方法的schema.someObject表示法。