我試圖在我創建的「插件」中調用系統存儲過程。當我在測試應用程序中測試我的插件時,它工作正常。當我在針對性的應用程序中運行插件時,我從Oracle那裏得到了一個異常,這沒有任何意義。Oracle SQL查詢僅在一個進程中失敗:「ORA-01405:提取的列值爲NULL」
我使用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代碼,但與數據庫服務器的結果不同。這裏會發生什麼?
我們可以看到獲取多數民衆贊成失敗? – ninesided
可惜@ninesided,我沒有進入反編譯DBMS_AQADM.START_QUEUE程序代碼,知道這是從哪裏來的。 –