【问题标题】:Bizarre Oracle 11 / ADO.NET Error奇怪的 Oracle 11 / ADO.NET 错误
【发布时间】:2011-05-29 15:07:43
【问题描述】:

我正在使用 Oracle 11.1.0.6.0 和 ADO.NET (System.Data.OracleClient) 运行查询,该查询适用于 Oracle 9 和 10,但在 Oracle 11 上我们收到错误:

System.Data.OracleClient.OracleException 未处理 Message="ORA-01405: 获取的列值为 NULL\n" Source="System.Data.OracleClient" 错误代码=-2146232008 代码=1405

除了由 AFE_ACCRUAL_TOTALS_GROSS 表上的可选连接引入的数据之外,此数据中的任何地方都没有空值。

如果我通过 ADO 运行查询,查询只会因此错误而失败。如果我从 TOAD 内部运行,它工作正常。我尝试跟踪发送到 Oracle 的 SQL,以确保 ADO.NET 没有重写任何内容,但它保持不变。在此查询之前没有运行任何 SQL。

它非常依赖数据。如果我从 AFE 表中删除 AFEID=361 的记录(即使它与 359、362、363... 完全相同),它会突然开始工作。当我删除其他记录时也有类似的效果。

我在这里完全没有想法,我会很感激有关如何继续进行此操作的帮助。我认为这是 ADO.NET 和 Oracle 之间的某种错误,但我不确定如何进一步了解这一点。我认为我还没有简单到可以将其报告给 MSFT 或 ORA。

我已将架构和数据和查询范围缩小到一个仍然会产生错误的最小示例。不幸的是,它仍然相当大。 (请原谅底部代码示例中的奇数查询,它通常不会进行交叉连接)

架构:

CREATE TABLE AFE ( AFEID NUMBER(10) NOT NULL, USERID NUMBER(10) );
CREATE TABLE AFEPARTNER ( AFEID NUMBER(10) NOT NULL, PARTNERID NUMBER(10) NOT NULL );
CREATE TABLE AFE_ACCRUAL_TOTALS_GROSS ( AFEID NUMBER(10) NOT NULL, GROSS_ACTUAL NUMBER(27,10) DEFAULT 0 NOT NULL );
CREATE TABLE USERS ( USERID NUMBER(10), NAME VARCHAR2(50 BYTE) );

CREATE INDEX IDX_AFEPARTNER_AFEID ON AFEPARTNER (AFEID);
ALTER TABLE AFE ADD (  PRIMARY KEY (AFEID));
ALTER TABLE AFEPARTNER ADD (  PRIMARY KEY (AFEID, PARTNERID));
ALTER TABLE AFE_ACCRUAL_TOTALS_GROSS ADD (  PRIMARY KEY (AFEID));
ALTER TABLE USERS ADD (  PRIMARY KEY (USERID));
ALTER TABLE AFE ADD (  FOREIGN KEY (USERID) REFERENCES USERS (USERID));
ALTER TABLE AFEPARTNER ADD (  FOREIGN KEY (AFEID) REFERENCES AFE (AFEID) ON DELETE CASCADE);
ALTER TABLE AFE_ACCRUAL_TOTALS_GROSS ADD (  FOREIGN KEY (AFEID) REFERENCES AFE (AFEID) ON DELETE CASCADE);

加载到表中的数据如下:

SET DEFINE OFF;
Insert into AFE
   (AFEID, USERID)
 Values
   (331, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (333, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (305, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (334, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (302, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (337, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (307, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (309, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (310, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (345, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (346, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (314, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (351, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (316, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (311, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (313, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (317, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (327, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (355, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (356, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (332, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (358, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (359, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (362, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (363, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (335, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (347, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (353, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (361, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (370, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (373, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (374, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (375, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (377, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (381, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (382, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (383, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (386, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (387, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (388, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (349, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (365, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (369, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (380, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (389, 1);
Insert into AFE
   (AFEID, USERID)
 Values
   (303, 1);
COMMIT;

SET DEFINE OFF;
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (347, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (353, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (361, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (373, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (332, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (380, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (311, 1231);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (313, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (302, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (314, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (316, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (305, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (303, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (331, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (334, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (335, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (337, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (327, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (345, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (346, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (349, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (351, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (355, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (356, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (359, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (363, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (369, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (370, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (374, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (377, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (389, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (310, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (309, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (307, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (358, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (362, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (365, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (375, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (317, 0);
Insert into AFE_ACCRUAL_TOTALS_GROSS
   (AFEID, GROSS_ACTUAL)
 Values
   (333, 0);
COMMIT;

SET DEFINE OFF;
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (302, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (302, 16);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (302, 20);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (303, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (303, 5);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (303, 22);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (305, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (305, 9);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (305, 10);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (305, 17);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (305, 18);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (307, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (307, 9);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (307, 10);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (307, 17);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (307, 18);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (309, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (309, 9);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (309, 10);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (309, 17);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (309, 18);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (310, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (310, 9);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (310, 10);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (310, 17);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (310, 18);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (311, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (311, 11);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (311, 22);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (313, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (313, 5);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (313, 22);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (314, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (314, 5);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (314, 22);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (316, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (316, 7);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (316, 17);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (317, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (327, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (327, 5);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (327, 15);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (331, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (332, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (332, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (333, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (333, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (334, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (334, 5);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (334, 22);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (335, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (335, 5);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (335, 22);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (337, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (337, 5);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (337, 15);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (345, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (346, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (347, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (347, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (347, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (349, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (349, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (349, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (351, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (351, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (351, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (353, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (353, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (353, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (355, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (355, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (355, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (356, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (356, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (356, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (358, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (358, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (358, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (359, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (359, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (359, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (361, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (361, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (361, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (362, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (362, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (362, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (363, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (363, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (363, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (365, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (365, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (365, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (369, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (369, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (369, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (370, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (370, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (370, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (373, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (373, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (373, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (374, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (374, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (374, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (375, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (375, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (375, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (377, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (377, 2);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (377, 14);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (377, 19);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (380, 1);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (381, 2);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (381, 10);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (382, 2);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (382, 17);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (383, 2);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (383, 10);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (386, 2);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (387, 2);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (388, 2);
Insert into AFEPARTNER
   (AFEID, PARTNERID)
 Values
   (389, 1);
COMMIT;

SET DEFINE OFF;
Insert into USERS
   (USERID, NAME)
 Values
   (26, 'Test');
Insert into USERS
   (USERID, NAME)
 Values
   (27, 'Group Admin User');
Insert into USERS
   (USERID, NAME)
 Values
   (2, 'Originator1');
Insert into USERS
   (USERID, NAME)
 Values
   (3, 'Originator2');
Insert into USERS
   (USERID, NAME)
 Values
   (4, 'Originator3');
Insert into USERS
   (USERID, NAME)
 Values
   (5, 'Originator4');
Insert into USERS
   (USERID, NAME)
 Values
   (6, 'Originator5');
Insert into USERS
   (USERID, NAME)
 Values
   (7, 'User1');
Insert into USERS
   (USERID, NAME)
 Values
   (8, 'User2');
Insert into USERS
   (USERID, NAME)
 Values
   (9, 'User3');
Insert into USERS
   (USERID, NAME)
 Values
   (10, 'User4');
Insert into USERS
   (USERID, NAME)
 Values
   (11, 'User5');
Insert into USERS
   (USERID, NAME)
 Values
   (12, 'Reviewer1');
Insert into USERS
   (USERID, NAME)
 Values
   (13, 'Reviewer2');
Insert into USERS
   (USERID, NAME)
 Values
   (14, 'Reviewer3');
Insert into USERS
   (USERID, NAME)
 Values
   (15, 'Reviewer4');
Insert into USERS
   (USERID, NAME)
 Values
   (16, 'Reviewer5');
Insert into USERS
   (USERID, NAME)
 Values
   (17, 'CEO');
Insert into USERS
   (USERID, NAME)
 Values
   (18, 'CFO');
Insert into USERS
   (USERID, NAME)
 Values
   (19, 'VP Finance');
Insert into USERS
   (USERID, NAME)
 Values
   (20, 'VP Exploration');
Insert into USERS
   (USERID, NAME)
 Values
   (21, 'VP Operation');
Insert into USERS
   (USERID, NAME)
 Values
   (22, 'VP Land');
Insert into USERS
   (USERID, NAME)
 Values
   (23, 'Production Manager');
Insert into USERS
   (USERID, NAME)
 Values
   (24, 'Land Manager');
Insert into USERS
   (USERID, NAME)
 Values
   (25, 'Exploration Manager');
Insert into USERS
   (USERID, NAME)
 Values
   (1, 'System Admin');
Insert into USERS
   (USERID, NAME)
 Values
   (28, 'Joan');
Insert into USERS
   (USERID, NAME)
 Values
   (29, 'VMM');
COMMIT;

测试代码:

    OracleConnection connection = new OracleConnection();
    connection.ConnectionString = "Data Source=test11g;User Id=afe_jeff2;Password=afe_jeff2";
    connection.Open();


    string SQL =
          "SELECT  gross_actual" +
          "  FROM afe, " +
          "       afepartner, " +
          "       users, " +
          "       afe_accrual_totals_gross " +
          "        " +
          " WHERE " +
          "         afe.userid = users.userid" +
          "       and afe.afeid = afe_accrual_totals_gross.afeid(+)"; 

        IDbCommand cmd = connection.CreateCommand();
        cmd.CommandText = SQL;
        IDataReader rdr = cmd.ExecuteReader();
        while (rdr.Read())  // EXCEPTION IS RAISED ON THIS CALL
        {
        }
        rdr.Close();

【问题讨论】:

  • 这真的很有趣。如果明天我到办公室之前还不能解决,我帮你看看,看看能不能解决。

标签: oracle ado.net


【解决方案1】:

您是否尝试过使用另一个 ADO.NET 提供程序来查看是否可以将其缩小到 MS 提供程序?哦,还要注意 MS 有 recently anounced 他们不会继续使用他们的 Oracle 供应商,也许现在是寻找新供应商的好时机。

DevArt(以前的 CoreLabs)拥有最常用的第 3 方提供商。

仅供参考 Toad for Oracle 是用 Delphi 编写的,直接与 Oracle 调用接口 (OCI) 对话,因此您会看到不同的行为并不完全令人惊讶(请注意)。

【讨论】:

  • 我刚刚通过也使用 OCI 的 cx_Oracle 在 SqlDeveloper 和 Python 中针对 10g 进行了测试。看起来@TimJ 是对的,提供商有问题。
  • 我刚刚下载了 DevArt 提供程序,它运行良好。数字 :) 这是在发布之前要更改的相当大的事情。 Tim J 和 Mark 感谢您的帮助!
【解决方案2】:

我们在 oracle 设置中将 oracle 优化器版本更改为 10.1,现在可以了。 OracleClient 似乎与 Oracle 11 及更高版本的某些优化不兼容。

【讨论】:

    【解决方案3】:

    作为一种解决方法,您是否尝试过查看查询或 SELECT CAST(gross_actual AS NUMBER) Gross_actual

    如果是提供程序中的一个错误,它可能会被数据库上的列不为空但由于外连接而可以在查询中返回空这一事实混淆。

    PS。不知道你放之前有没有简化查询,但是afepartner在FROM中做了什么,没有任何join到另一个表?

    【讨论】:

    • Gary,我忘了提,但我们能够通过将“decode(field,null,null,field)”代替“field”来使查询工作,所以我怀疑你是正确的,提供者很困惑。我们有点担心尝试修复,因为我们有很多查询,分散,即使我们修复了这个实例,也不能保证它不会在发布后立即弹出。是的,查询被简化了。通常,该表也会有一个连接条件。
    猜你喜欢
    • 2013-12-11
    • 1970-01-01
    • 2018-08-04
    • 2016-04-20
    • 1970-01-01
    • 2014-06-30
    • 2017-04-02
    • 2012-12-28
    • 1970-01-01
    相关资源
    最近更新 更多