Я пытаюсь вызвать системную хранимую процедуру в "плагине", который я построил. Когда я тестирую свой плагин в тестовом приложении, он работает нормально. Когда я запускаю плагин в целевом приложении, для которого я его создаю, я получаю исключение от Oracle, которое не имеет никакого смысла.
Я использую сервер Oracle 11.2.0.1.0 и ODP.NET 2.112.2.0.
Вот трассировка отладки из ODP.NET из моего тестового приложения:
(ENTRY) OracleConnection::OracleConnection(1)
(POOL) New connection pool created for: "Data Source=orcl;User ID=scott;"
(ENTRY) OracleConnection::CreateCommand()
OpsSqlPrepare2():SQL: begin DBMS_AQADM.START_QUEUE(queue_name => 'MyQueue'); end;
(EXIT) OpsSqlExecuteNonQuery(): RetCode=0 Line=877
(EXIT) OracleCommand::ExecuteNonQuery()
(ENTRY) OracleConnection::Dispose()
(ENTRY) OracleConnection::Close()
А вот трассировка отладки из ODP.NET из того же кода, который выполняется в целевом приложении:
(ENTRY) OracleConnection::OracleConnection(1)
(POOL) New connection pool created for: "Data Source=orcl;User ID=scott;"
(ENTRY) OracleConnection::CreateCommand()
OpsSqlPrepare2():SQL: begin DBMS_AQADM.START_QUEUE(queue_name => 'MyQueue'); end;
(EXIT) OpsSqlExecuteNonQuery(): RetCode=0 Line=877
(EXIT) OracleCommand::ExecuteNonQuery()
(ENTRY) OpsErrGetOpoCtx()
(ERROR) Oracle error code=1405; ORA-01405: fetched column value is NULL
(EXIT) OpsErrGetOpoCtx(): RetCode=0 Line=137
(ENTRY) OracleConnection::Dispose()
(ENTRY) OracleConnection::Close()
Я в растерянности относительно того, что может отличаться между тестовыми / целевыми приложениями. Оба процесса работают как члены локальной группы администраторов. Оба используют одну и ту же строку подключения. Оба работают с одним и тем же кодом .NET, но с отличным результатом от сервера базы данных. Что здесь может происходить?