Je crée deux tables dans ma base de données Oracle (11g) comme ceci:
create table "test" ("id" int);
create table test ("id" int);
Ensuite, dans mon programme C #, il y a un problème:
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();
pour les deux command.ExecuteReader () J'ai une erreur "ORA-00911: caractère non valide".
Retirer ; (point-virgule) à la fin de la chaîne SQL
Au cas où d'autres personnes se retrouveraient ici à chercher comment inclure plusieurs instructions dans une seule commande, vous devez encapsuler vos instructions entre begin et end. Cela arrêtera les erreurs de caractères non valides dues aux points-virgules. Par exemple:
var command = new OracleCommand(@"
begin
select * from test;
select * from test2;
end;")
Pourquoi utilisez-vous un point-virgule dans la requête ... Il doit simplement être considéré comme un caractère non valide ..... Vous devez supprimer le point-virgule (;) de la requête et faire comme ceci:
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();
Pour plus de détails sur cette erreur, vous pouvez lire ici .
Ce n'est pas le problème de ce gars, mais j'espère que cela aidera quelqu'un là-bas:
J'ai souvent ce problème avec des guillemets simples cachés dans les commentaires en ligne, comme ceci:
select foo
from bar
where
/* some helpful comment with a "can't" or somesuch */
baz='qux'
La citation unique inégalée dans le commentaire provoque toutes sortes de drames, et Oracle ne fait aucun effort pour vous aider à le comprendre.