web-dev-qa-db-fra.com

ORA-00911: caractère non valide

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".

58
XlbrlX

Retirer ; (point-virgule) à la fin de la chaîne SQL

161
Antonio Bakula

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;")
33
John Galambos

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 .

1
Akash KC

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.

1
inanutshellus