ORA-00911:无效字符



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

用于两个命令。ExecuteRead()我有一个"ORA-00911:无效字符"错误。

删除;(分号)来自SQL字符串的末尾

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

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

为什么在查询中使用分号。。。它只是被视为无效字符。。。。。您必须从查询中删除分号(;),并执行以下操作:

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

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

这不是这家伙的问题,但希望这能帮助到其他人:

我经常在内联评论中隐藏单引号,比如:

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

评论中无与伦比的一句话引发了各种各样的戏剧性事件,oracle不会特意帮你弄清楚这一点。

deleteupdateinsert命令中的sqldatasource参数?替换为:Column_name

最新更新