0

我正在使用带有 .net 连接器(oracle.dataaccess.dll)的 oracle express 10g2。

我的问题是我有 2 个可连接的 A 和 B 表;

在 sqlDeveloper 我称之为:

select * from A; //no problem
select * from B; // no problem
select * from A inner join B on B.id = A.bId; // no problem + joining

我的 c# 类(LocalOracleDataProvider.cs);

var cm1 = connection.CreateCommand();
cm1.CommandText = "select * from A;";
var cm2 = connection.CreateCommand();
cm2.CommandText = "select * from B;";
var cm3 = connection.CreateCommand();
cm3.CommandText = "select * from A inner join B on B.id = A.bId;";
...
var dt1 = cm1.ExecuteReader(); // ok
var dt2 = cm2.ExecuteReader(); // ok
var dt3 = cm3.ExecuteReader(); // crash oracle error ORA-00911 : invalid character

我不明白这个问题......是我的错误请求我没有看到吗?还是有任何问题(没有找到——我一个人在这吗?)?我必须创建一个封装加入请求的 sqlview 吗?或任何其他旁路?

提前谢谢各位!

4

3 回答 3

0

尝试将第三个命令转换为:

cm3.CommandText = "select * from A inner join B on ( B.id = A.bId ) ;";
于 2012-10-01T15:55:18.580 回答
0

尝试去掉 sql 语句末尾的分号。
在 SELECT 语句中不允许使用分号,但在 CALL 和 EXECUTS 等其他语句中则需要分号。

此外,这可能是多余的,但添加一个

cm3.CommandType = CommandType.Text;
于 2012-10-01T16:23:55.660 回答
0

找到了... ExecuteReader 与“;”不兼容

于 2012-10-01T16:30:50.713 回答