Conformément à l'OERR,ORA-00911 :caractère invalide
Cause :les identifiants ne peuvent pas commencer par un caractère ASCII autre que des lettres et des chiffres. $#_ sont également autorisés après le premier caractère. Les identificateurs entre guillemets doubles peuvent contenir n'importe quel caractère autre qu'un guillemet double. Les guillemets alternatifs (q'#…#') ne peuvent pas utiliser d'espaces, de tabulations ou de retours chariot comme délimiteurs. Pour tous les autres contextes, consultez le manuel de référence du langage SQL.
Action :Aucun
ORA-00911 L'exception est très courante et se produit généralement pour les erreurs de syntaxe courantes. Certaines des causes courantes et la résolution sont indiquées ci-dessous
Liste de vérification à exécuter pour l'erreur ORA-00911
1 . Parfois, lorsque vous copiez le sql à partir d'un autre éditeur, il peut y avoir un caractère non imprimable/spécial ajouté (généralement aigu au lieu d'un guillemet)
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%`; select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%`; * ERROR at line 1: ORA-00911: invalid character
La bonne méthode consiste à supprimer ces caractères et à réessayer
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
2. Cette erreur se produit lorsqu'un caractère spécial est utilisé dans une clause SQL WHERE et que la valeur n'est pas entourée de guillemets simples.
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like USER%; select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like USER%; * ERROR at line 1: ORA-00911: invalid character
La bonne requête est
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
3 . lorsqu'un point-virgule supplémentaire (;) est ajouté pour terminer la requête
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';; select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%'; * ERROR at line 1: ORA-00911: invalid character
Oracle a amélioré cette version 11g et supérieure
select CHECKPOINT_CHANGE# from v$database;; select CHECKPOINT_CHANGE# from v$database; * ERROR at line 1: ORA-00933: SQL command not properly ended
La bonne façon est d'utiliser un seul point-virgule
SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%'; SQL> select CHECKPOINT_CHANGE# from v$database;
4 . lorsque le point-virgule (;) est ajouté pour terminer la requête en exécution immédiate de pl/sql
SQL> begin execute immediate 'select * from v$database;'; end; / begin * ERROR at line 1: ORA-00911: invalid character ORA-06512: at line 2
Oracle a amélioré cette version 11g et supérieure
begin execute immediate 'select * from v$database;'; end; / begin * ERROR at line 1: ORA-00933: SQL command not properly ended ORA-06512: at line 2
La bonne façon est
begin execute immediate 'select * from v$database'; end; /
5. cela se produit également lorsque vous essayez d'utiliser un caractère spécial dans une instruction SQL. Si un caractère spécial autre que $, _ et # est utilisé dans le nom d'une colonne ou d'une table oracle, le nom doit être placé entre guillemets doubles.
create table example (j% number); create table example (j% number) * ERROR at line 1: ORA-00911: invalid character
Bonne manière
Nous devrions les placer entre guillemets ""
SQL> create table example ("j%" number); Table created.
6. lorsque le point-virgule (;) est ajouté pour mettre fin à l'exécution de la requête à partir d'un langage de programmation tel que .net ou java
J'espère que vous aimez ce contenu pour résoudre le ORA-00911 :caractère invalide dans la base de données Oracle. Veuillez fournir les commentaires pour améliorer et inclure plus de choses dans ce post
Articles connexes
ORA-00936 expression manquante
ORA-01017 :nom d'utilisateur/mot de passe invalide
ora-29913 :erreur lors de l'exécution de l'appel odciexttableopen
Contrainte unique ORA-00001 violée
ORA-00257 :erreur de l'archiveur. Connectez-vous en interne uniquement, jusqu'à ce qu'il soit libéré.
ORA-03113 :fin de fichier sur le canal de communication
Documentation Oracle