SQL错误:ORA-00917:将值插入Customer表时缺少逗号:

时间:2015-10-13 03:36:07

标签: sql oracle oracle11g

Insert into Les_Mills_Customers
( 
    CUSTOMER_ID         
    ,C_USERNAME       
    ,C_TITLE                  
    ,F_NAME                  
    ,L_NAME                  
    ,C_MESSAGE               
    ,C_ADDRESS               
    ,C_GENDER                 
    ,C_MOBILE                  
    ,C_NOTES                 
    ,C_PAYMENT_MODE           
    ,C_EMAIL                 
    ,C_TYPE                   
    ,C_PICTURE                       
    ,C_JOINDATE                     
    ,C_TIMETABLES
 ) 
 values 
 ( 
    50
    ,’A_Joe’
    ,’Mrs’,
    ’Allison’
    ,’Joe’
    ,’RPM’
    ,’Claudelands’
    ,’F’
    ,0273252302
    , ’RPM’
    ,’E’
    ,’123@gmail.com’
    ,'NULL'
    ,’NULL’
    ,To_DATE ('20-02-15','DD-MM-YY'),01
 )
  

命令行错误:328列:171错误报告 - SQL错误:   ORA-00917:缺少逗号   00917. 00000 - "缺少逗号"   *原因:
  *操作:

3 个答案:

答案 0 :(得分:3)

INSERT 语句存在多个问题:

’A_Joe’,’Mrs’,’Allison’,’Joe’,’RPM’,’Claudelands’,’F’,0273252302, 
’RPM’,’E’,’123@gmail.com’,'NULL',’NULL’,To_DATE ('20-02-15','DD-MM-YY')
  1. 您必须将字符串括在单引号中。 不是单引号,'是单引号。就像你在TO_DATE函数中使用的一样。

  2. 更好地使用YYYY格式,否则您将重新发明 Y2K 错误。

  3. 不应在单引号内使用
  4. NULL ,只需保留关键字。否则,您将它存储为字符串,而不是NULL值。

答案 1 :(得分:0)

如@Lalit所述,您必须用单引号括起字符串。通过正确设置,可以在某些数据库产品中使用双引号,但此配置与ANSI不兼容,必须避免使用。

请仅在手工制作的原始SQL语句中执行此操作。将字符串传递给已执行代码中的SQL命令将使您容易受到SQL injection attacks的攻击。使用SQL参数是正确的方法。

并注意像Sant'Anna这样的名字,其中包含撇号。撇号经常用单引号表示。在这种情况下,将撇号加倍以表示单个撇号。

INSERT INTO TABLE1 (NAME) VALUE ('Sant''Anna')

答案 2 :(得分:0)

下面是INSERT INTO语法,请修改您的代码,插入值时出现问题,您没有使用单引号(')。

Insert into Les_Mills_Customers
( 
    CUSTOMER_ID         
    ,C_USERNAME       
    ,C_TITLE                  
    ,F_NAME                  
    ,L_NAME                  
    ,C_MESSAGE               
    ,C_ADDRESS               
    ,C_GENDER                 
    ,C_MOBILE                  
    ,C_NOTES                 
    ,C_PAYMENT_MODE           
    ,C_EMAIL                 
    ,C_TYPE                   
    ,C_PICTURE                       
    ,C_JOINDATE                     
    ,C_TIMETABLES
 ) 
 values 
 ( 
    50
    , 'A_Joe'
    , 'Mrs'
    , 'Allison'
    , 'Joe'
    , 'RPM'
    , 'Claudelands'
    , 'F'
    , 0273252302
    , 'RPM'
    , 'E'
    , '123@gmail.com'
    , NULL
    , NULL
    , To_DATE ('20-02-15','DD-MM-YY')
    , 01
 )