Ответ 1
Удалить; (с запятой) с конца строки SQL
Я создаю две таблицы в моей базе данных оракула (11g) следующим образом:
create table "test" ("id" int);
create table test ("id" int);
Тогда в моей программе С# есть проблема:
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: недопустимый символ".
Удалить; (с запятой) с конца строки SQL
В случае, если другие люди заходят сюда, чтобы узнать, как включать несколько операторов в одну команду, вам нужно обернуть ваши инструкции в begin и end. Это остановит неправильные ошибки символов из-за полуколоней. Например:
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'
Непревзойденная одинарная цитата в комментарии вызывает все виды драмы, и оракул не выходит из своего пути, чтобы помочь вам понять это.
Замените параметр sqldatasource ?
на :Column_name
в командах delete
, update
и insert
.