ORA-00911:无效字符

Xlb*_*rlX 58 c# system.data.oracleclient

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

    create table "test" ("id" int);
    create table test ("id" int);
Run Code Online (Sandbox Code Playgroud)

然后在我的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(); 
Run Code Online (Sandbox Code Playgroud)

对于command.ExecuteReader()我有一个"ORA-00911:无效字符"错误.

Ant*_*ula 165

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

  • 为什么Oracle不能在错误消息中说出哪个字符无效? (23认同)
  • 对不起发誓,但严重wtf?为什么他们不接受查询字符串中的分号?我浪费了一个半小时试图找出我非常简单的数据库代码出了什么问题. (12认同)
  • 我浪费整个下午来认识我的问题.我首先在一个命令中编写多个语句,所以如果开发人员遇到不友好的"无效字符"错误消息,那真的是一场噩梦. (2认同)

Joh*_*bos 33

如果其他人在这里寻找如何在单个命令中包含多个语句,则需要将语句包装在开始结束中.这将停止由于冒号导致的无效字符错误.例如:

var command = new OracleCommand(@"
    begin
    select * from test;
    select * from test2;
    end;")
Run Code Online (Sandbox Code Playgroud)

  • 当我尝试使用它时,我得到以下异常:"PLS-00428:在此SELECT语句中需要一个INTO子句" (2认同)