2012-10-01 2 views
1

lorsque je crée une table comme ceci:erreur "% s: identifiant non valide" se produit lorsque je crée une table dans Oracle DB

create table DBDI_HIREDETAIL(
HireID int not null, 
EquipID int not null, 
Quantity int, 
TotalFee float, 
Comment varchar(200) 
); 

L'erreur se produit comme ceci:

Error at Command Line: "TotalFee float" Error report: SQL Error: ORA-00904: : invalid identifier 00904. 00000 - "%s: invalid identifier"

Je don Je ne comprends pas pourquoi mon code a une erreur, ça semble aller.

+0

@Satya, yup: http://docs.oracle.com/cd/E11882_01/server .112/e26088/sql_elements001.htm # SQLRF50981 – Ben

Répondre

5

COMMENT est un mot réservé dans Oracle; Il est utilisé pour ajouter comments au dictionnaire de données. Vous devriez éviter d'utiliser cela comme un nom de colonne.

SQL> create table a (comment number); 
create table a (comment number) 
       * 
ERROR at line 1: 
ORA-00904: : invalid identifier 

Si vous vraiment voulez utiliser ce nom de colonne que vous êtes devez citer, par exemple "COMMENT":

SQL> create table a ("COMMENT" number); 

Table created. 

Je vous recommande de ne pas faire ce que vous devez citer la colonne partout.

+0

je vous remercie beaucoup, ça marche :), je suis un débutant dans Oracle DB et j'ai essayé d'inclure le symbole "[]" comme "[Commentaire]" parce que je pensais que il s'appelle MS SQL Server mais cela n'a pas fonctionné. – user1712088

+0

Pas de problème @ utilisateur1712088! Votre vie sera beaucoup plus facile si vous venez avec un nom différent pour la colonne, plutôt que de citer le nom de la colonne. Si vous le citez, vous devez vous assurer qu'il est identique à chaque fois; vous vous épargnerez beaucoup de tracas à long terme si vous l'appelez «commentaires» ou quelque chose comme ça. – Ben

1

C'est parce que COMMENT est un mot réservé dans SQL - utiliser un autre nom de colonne (comme HIREDETAIL_COMMENT) à la place:

create table DBDI_HIREDETAIL(
    HireID int not null, 
    EquipID int not null, 
    Quantity int, 
    TotalFee float, 
    HireDetail_Comment varchar(200) 
); 
Questions connexes