Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-00911 :caractère invalide

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