作成した「プラグイン」でシステムストアドプロシージャを呼び出そうとしています。プラグインをテストアプリケーションでテストすると、正常に動作します。構築しているターゲットアプリでプラグインを実行すると、Oracleから意味のない例外が発生します。
Oracleサーバー11.2.0.1.0とODP.NET2.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()
テスト/ターゲットアプリケーション間で何が異なる可能性があるかについて、私は途方に暮れています。両方のプロセスは、ローカルのAdministratorsグループのメンバーとして実行されています。どちらも同じ接続文字列を使用しています。どちらも同じ.NETコードを実行していますが、データベースサーバーとは結果が異なります。ここで何が起こっているのでしょうか?