59 votes

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 : invalid character".

167voto

Antonio Bakula Points 12301

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

33voto

John Galambos Points 563

Au cas où d'autres personnes se retrouveraient ici à la recherche d'un moyen d'inclure plusieurs déclarations dans une seule commande, vous devez envelopper vos déclarations dans des fichiers commencer y fin . Cela permettra d'éviter 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;")

1voto

LolCoder Points 6386

Pourquoi utilisez-vous le point-virgule dans la requête... Il sera considéré comme un caractère invalide...... 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 aquí .

1voto

Gabriel Points 1565

Ce n'est pas le problème de ce type, mais j'espère que cela aidera quelqu'un d'autre :

J'ai souvent ce problème avec des guillemets simples cachés dans des commentaires en ligne, comme ceci :

select foo 
from bar
where 
/* some helpful comment with a "can't" or somesuch */
baz='qux'

Le guillemet simple non apparié dans le commentaire cause toutes sortes de problèmes, et oracle ne fait pas d'efforts pour vous aider à les résoudre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X