sql >> Base de Datos >  >> RDS >> Oracle

ORA-00911:carácter no válido

Según OERR,ORA-00911 :carácter no válido

Causa :los identificadores no pueden comenzar con ningún carácter ASCII que no sean letras y números. $#_ también se permiten después del primer carácter. Los identificadores entre comillas dobles pueden contener cualquier carácter que no sea una comilla doble. Las comillas alternativas (q'#…#') no pueden usar espacios, tabulaciones o retornos de carro como delimitadores. Para todos los demás contextos, consulte el Manual de referencia del lenguaje SQL.
Acción :Ninguno

ORA-00911 La excepción es muy común y generalmente ocurre por errores de sintaxis comunes. Algunas de las causas comunes y la resolución se dan a continuación

Lista de comprobación a ejecutar para el error ORA-00911

1 . A veces, cuando copia el sql de otro editor, es posible que se agreguen caracteres especiales o no imprimibles (generalmente Agudo en lugar de comillas)

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 forma correcta es eliminar esos caracteres e intentarlo de nuevo

SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';

2. Este error ocurre cuando se usa un carácter especial en una cláusula WHERE de SQL y el valor no está entre comillas 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 consulta correcta es

SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';

3 . cuando se agrega un punto y coma adicional (;) para finalizar la consulta

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 ha mejorado este 11g y superior

select CHECKPOINT_CHANGE# from v$database;;

select CHECKPOINT_CHANGE# from v$database;
*
ERROR at line 1:
ORA-00933: SQL command not properly ended 

La forma correcta es usar un solo punto y coma

SQL> select * from APPS.FND_PROFILE_OPTION_NAME where profile_name like 'USER%';
SQL> select CHECKPOINT_CHANGE# from v$database;

4 . cuando se agrega punto y coma (;) para finalizar la consulta en ejecución inmediata 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 ha mejorado este 11g y superior

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 forma correcta es

begin
execute immediate 'select * from v$database';
end;
/

5. también ocurre cuando intenta usar un carácter especial en una declaración SQL. Si se utiliza un carácter especial que no sea $, _ y # en el nombre de una columna o tabla de Oracle, el nombre debe estar entre comillas dobles.

create table example (j% number);  

create table example (j% number) 
*
ERROR at line 1: 
ORA-00911: invalid character 

Forma correcta

Deberíamos encerrarlos entre comillas dobles “”

 SQL> create table example ("j%" number);  
Table created.  

6. cuando se agrega un punto y coma (;) para finalizar la ejecución de la consulta desde un lenguaje de programación como .net o java

Espero que le guste este contenido para resolver el ORA-00911:carácter no válido en la base de datos de Oracle. Proporcione sus comentarios para mejorar e incluir más cosas en esta publicación

Artículos relacionados
ORA-00936 expresión faltante

ORA-01017:nombre de usuario/contraseña no válido

ora-29913:error al ejecutar la llamada odciexttableopen

ORA-00001 restricción única violada

ORA-00257:error del archivador. Conéctese solo internamente, hasta que se libere.

ORA-03113:fin de archivo en canal de comunicación

Documentación de Oracle