Почему я не могу выполнить хранимую процедуру? (OracleException был пойман)
Это код для подключения к базе данных 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 ответа
Вам может понадобиться определить schema.package.storedprocedure
(или же schema.table
) в вашем командном тексте
Вместо:
select * from table
Использование:
select * from schema.table
... и то же самое относится к функциям / хранимым процедурам
Если ваш commandText содержит только хранимую процедуру:
storedprocedurename
Пытаться:
schema.package.storedprocedurename
Также вы можете использовать общедоступные синонимы. Обычно лучше создать общедоступные синонимы для объекта, чем явно использовать подход "владелец / схема". Пользователю этих объектов не нужно беспокоиться о нотации schema.someObject с этим подходом.