ORA-00911:无效字符(ORA-00911: invalid character)

2019-06-27 18:36发布

我在甲骨文(11克)这样的数据库创建两个表:

    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:无效字符”错误。

Answer 1:

去掉 ; (分号)从SQL字符串的末尾



Answer 2:

如果其他人拉闸这里寻找如何将单一命令多个语句,你需要包装内的开始结束您的语句。 这将停止无效字符错误,由于分号。 例如:

var command = new OracleCommand(@"
    begin
    select * from test;
    select * from test2;
    end;")


Answer 3:

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

   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(); 

对于这个错误的更多详细信息,可以阅读这里 。



Answer 4:

这不是这家伙的问题,但希望这将有助于有人出来:

我经常有这样的问题,单引号隐藏内嵌评论里面,像这样:

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

在注释中无与伦比的单引号引起各种戏剧,和Oracle不出去它的方式来帮助你找出答案。



Answer 5:

更换SqlDataSource的参数?:Column_namedeleteupdateinsert命令。



文章来源: ORA-00911: invalid character