插入时SQL中缺少逗号

时间:2017-11-21 17:22:36

标签: sql oracle syntax-error sql-insert

代码:

CREATE TABLE PERSONNE1 ( 
   NUMP NUMBER, 
   PRENOM VARCHAR2(25), 
   NOM VARCHAR2(25), 
   DATENAIS DATE, 
   CONSTRAINT PK_NUMP PRIMARY KEY (NUMP)
);

create sequence numpersonne
            start with 0
            increment by 2
            minvalue -1;

SQL> insert into PERSONNE1 (numpersonne.nextval, "Jack", "Nicholson", to_date('04/22/1937','dd/mm/yyyy'));
    insert into PERSONNE1 (numpersonne.nextval, "Jack", "Nicholson", to_date('04/22/1937','dd/mm/yyyy'))

错误:

  

第1行的错误:
  ORA-00917:缺少逗号

2 个答案:

答案 0 :(得分:3)

SQL中的字符串文字用单引号(')表示,而不是双引号(")。 更重要的是,正如评论中所述,您错过了values关键字:

insert into PERSONNE1
values -- was missing
(numpersonne.nextval, 
 'Jack', -- Fix the quotes here
 'Nicholson', -- And here
 to_date('04/22/1937','mm/dd/yyyy'));

编辑:
日期格式也有误 - 您需要切换ddmm

答案 1 :(得分:2)

您所看到的错误的直接原因是您的错误地点是您的价值观;目前他们(列)列的一部分列表,你不能在其中进行函数调用 - 所以开始括号被标记。这是因为您错过了values关键字。

正如@Mureinik所说,字符串封闭是单引号,而不是双引号;而且你的日期和月份也错了:

insert into PERSONNE1
values (numpersonne.nextval, 'Jack', 'Nicholson', to_date('04/22/1937','mm/dd/yyyy'));

或使用日期文字来避免混淆的可能性:

insert into PERSONNE1
values (numpersonne.nextval, 'Jack', 'Nicholson', date '1937-04-22');

明确列出您要插入的列:

也是一个好主意
insert into PERSONNE1 (NUMP, PRENOM, NOM, DATENAIS)
values (numpersonne.nextval, 'Jack', 'Nicholson', date '1937-04-22');