web-dev-qa-db-fra.com

Comment puis-je résoudre l'erreur de caractère non valide ORA-00911:?

J'ai essayé d'exécuter une SQLINSERT avec Toad for Oracle:

INSERT INTO GRAT_ACTIVITY
   (UUID, IP_ADRESS, SEND_MAIL, DATE_CREA, DATE_UPD, CREATOR, CENTER, ETAT, REQUEST)
 VALUES('555-vgd9-pllkd-5513', '172.12.23.130', 'N', SYSDATE, SYSDATE, '1554', 'M18', 'I', 8842);
--COMMIT;

la structure de la table GRAT_ACTIVITY est la suivante:

CREATE TABLE CASH.GRAT_ACTIVITY
(
  UUID       VARCHAR2(64 BYTE) NOT NULL,
  IP_ADRESS  VARCHAR2(15 BYTE),
  SEND_MAIL  VARCHAR2(1 BYTE),
  DATE_CREA  DATE,
  DATE_UPD   DATE,
  CREATOR    VARCHAR2(4 BYTE),
  CENTER     VARCHAR2(4 BYTE),
  ETAT       VARCHAR2(1 BYTE),
  REQUEST    NUMBER
)

le message d'erreur:

ORA-00911: caractère non valide

Cause: les identificateurs ne peuvent pas commencer par un caractère ASCII autre que des lettres et des chiffres. $ # _ sont également autorisés après le premier personnage. Les identifiants entre guillemets doubles peuvent contenir n’importe quel caractère autre qu'une double citation. Citations alternatives (q '# ... #') ne pouvez pas utiliser d'espaces, de tabulations ou de retours à la ligne comme séparateurs. Pour tous autres contextes, consultez le Manuel de référence du langage SQL.

Action: Aucune

Comment puis-je le résoudre?

15
CHHIBI AMOR

La déclaration que vous exécutez est valide. L'erreur semble signifier que Toad inclut le point-virgule final dans la commande, ce qui provoque un ORA-00911 lorsqu'il est inclus dans une instruction - puisqu'il s'agit d'un séparateur d'instruction dans le client et non dans l'instruction elle-même.

La ligne commentée suivante peut être source de confusion pour Toad ( comme décrit ici ); ou peut-être parce que vous essayez de tout exécuter en une seule instruction, auquel cas vous pouvez utiliser la commande run script (F9) au lieu de l'instruction run (F5).

Le simple fait de supprimer la ligne commentée supprime le problème, mais si vous voyez également cela avec un commit réel, il est probable que vous utilisiez la mauvaise méthode pour exécuter les instructions.

Il y a un peu plus d'informations sur la façon dont Toad analyse les points-virgules dans un commentaire sur cette question connexe , mais je ne connais pas assez Toad pour entrer dans les détails.

39
Alex Poole

J'ai eu le même problème et c'était dû à la fin de la ligne. J'avais copié un autre document ... J'ai mis tout sur la même ligne, puis je les ai divisés à nouveau et cela a fonctionné.

1
azzurroverde

J'ai rencontré la même chose récemment. c'était simplement dû aux espaces lors de la copie d'un script d'un document vers un développeur SQL. J'ai dû supprimer les espaces et le script a été exécuté.

1
Norbert Wupona

Supprimer le point-virgule (;), le backtick (``) etc. de l'intérieur d'une requête

1
Bablu Ahmed

J'utilise un programme tiers qui exécute Oracle SQL et j'ai rencontré cette erreur. Avant une déclaration SELECT, j'avais des notes commentées contenant des caractères spéciaux. Supprimer les commentaires a résolu le problème.

1
root

Si un nom spécial autre que $, _ et # est utilisé dans le nom d'une colonne ou d'un tableau, le nom doit être placé entre guillemets . Lien

0
erakm