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

для обеих команд.ExecuteReader () у меня есть ошибка" ORA-00911: недопустимый символ".

5 53

5 ответов:

удалить ; (точка с запятой) до конца строки SQL

в случае, если другие люди здесь ищут, как включить несколько операторов в одну команду, вам нужно обернуть свои операторы в начать и конец. Это остановит недопустимые ошибки символов из-за точки с запятой. Например:

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

почему вы используете точку с запятой в query...It просто примите как недопустимый символ..... Вы должны удалить точку с запятой (;) из запроса и сделать так:

   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 не выходит из своего пути, чтобы помочь вам понять это.

заменить sqldatasource параметр ? с :Column_name на delete,update и insert команды.