2

这是连接到 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 访问数据库。为什么我会收到此错误?数据库端缺少存储过程还是我的代码?关于如何解决这个问题的任何想法?

4

2 回答 2

4

您可能需要在命令文本中定义schema.package.storedprocedure(或schema.table

代替:

select * from table

利用:

select * from schema.table

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

如果您的 commandText 仅包含存储过程:

storedprocedurename

尝试:

schema.package.storedprocedurename
于 2011-01-31T14:07:20.703 回答
1

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

于 2011-01-31T18:54:30.973 回答