Почему я не могу выполнить хранимую процедуру? (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 с этим подходом.

Другие вопросы по тегам