60

我在我的 oracle (11g) 数据库中创建了两个表,如下所示:

    create table "test" ("id" int);
    create table test ("id" int);

然后在我的 C# 程序中有一个问题:

    OracleConnection conn = new OracleConnection(-myConnectionString-);
    conn.Open();
    OracleCommand command = new OracleCommand("select * from test;", conn);
    var v = command.ExecuteReader(); 
    OracleCommand command = new OracleCommand("select * from \"test\";", conn);
    var v = command.ExecuteReader(); 

对于两个 command.ExecuteReader() 我都有“ORA-00911:无效字符”错误。

4

5 回答 5

173

消除 ; (分号)从 SQL 字符串的末尾开始

于 2012-09-04T11:05:15.713 回答
33

如果其他人在这里寻找如何在单个命令中包含多个语句,您需要将您的语句包装在beginend中。这将停止由于分号导致的无效字符错误。例如:

var command = new OracleCommand(@"
    begin
    select * from test;
    select * from test2;
    end;")
于 2013-08-27T03:12:12.043 回答
1

你为什么在查询中使用分号......它只是被视为无效字符......你必须从查询中删除分号(;)并这样做:

   OracleConnection conn = new OracleConnection(-myConnectionString-);
   conn.Open();
    OracleCommand command = new OracleCommand("select * from test", conn);
    var v = command.ExecuteReader(); 
    OracleCommand command = new OracleCommand("select * from \"test\"", conn);
    var v = command.ExecuteReader(); 

有关此错误的更多详细信息,您可以在此处阅读。

于 2012-09-04T11:05:52.787 回答
1

这不是这个人的问题,但希望这会帮助那里的人:

我经常遇到隐藏在内联注释中的单引号的问题,如下所示:

select foo 
from bar
where 
/* some helpful comment with a "can't" or somesuch */
baz='qux'

评论中无与伦比的单引号引起了各种各样的戏剧性,而甲骨文并没有竭尽全力帮助您解决这个问题。

于 2013-02-15T16:36:24.297 回答
0

将,和命令中的sqldatasource参数替换为?:Column_namedeleteupdateinsert

于 2017-08-06T13:37:01.253 回答