ORA-00917: oracle 中不存在插入时缺少逗号

Posted

技术标签:

【中文标题】ORA-00917: oracle 中不存在插入时缺少逗号【英文标题】:ORA-00917: missing comma when insert not exist in oracle 【发布时间】:2015-11-25 01:30:32 【问题描述】:

我有这样的查询:

INSERT INTO KONTAK (IDKONTAK, NAMA, NOHP, ALAMAT, GROUPKONTAK_FK) VALUES 
(SQ_IDKONTAK.NEXTVAL, 'ANDIKA PRATAMA', '+6285226202202', 'JPR', '' WHERE NOT EXISTS
(SELECT * FROM KONTAK WHERE NAMA = 'AMIN'))

我想根据 KONTAK NAMA='AMIN' 中不存在的值向 KONTAK 表插入数据。

当我运行它时,我得到了错误:

ORA-00917:缺少逗号

有什么建议吗?

【问题讨论】:

是的。插入第 5 列值时出现问题。在第 5 列中告诉我您需要的确切值是多少? 首先,我不认为这是合法的语法,但除此之外,你为什么在没有加入任何东西时使用 WHERE EXISTS? 我暂时删除了我的答案。您能否更好地解释您要完成的工作。您是否尝试进行条件插入。仅当某个值不存在时才插入常量(硬编码)值列表? “AMIN”与您插入的值有什么关系? @VarunRao 当我给 5tn 列赋值时它仍然缺少逗号 @mrjoltcola 我会在下面尝试建议 【参考方案1】:

如果您尝试进行有条件的插入,那么您可以使用 MERGE,或者使用类似的东西,假设您想要插入 'ANDIKA PRATAMA' 仅当 'AMIN' 不存在时(这没有意义对我来说,但这似乎是你的目标):

insert into table1(id1, col1, col2)
  select sequence1.nextval, 'VAL1', 'VAL2'
    from dual
    where not exists (select 1 from table1 where col1 = 'AMIN')

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9014.htm

【讨论】:

【参考方案2】:

在插入时使用Where 条件和select 语句;

试试;

INSERT INTO KONTAK (IDKONTAK, NAMA, NOHP, ALAMAT, GROUPKONTAK_FK) 
select 
SQ_IDKONTAK.NEXTVAL, 'ANDIKA PRATAMA', '+6285226202202', 'JPR', '' 
from dual
WHERE NOT EXISTS (
    SELECT * FROM KONTAK WHERE NAMA = 'AMIN'
)

【讨论】:

你的建议是真的,..但我不能投票接受你的答案,因为 mrjoltcola 也是正确的答案,..而且他的答案比你快,......很抱歉,。 ...但感谢您的建议...

以上是关于ORA-00917: oracle 中不存在插入时缺少逗号的主要内容,如果未能解决你的问题,请参考以下文章

sql oracle 缺少逗号错误代码 ORA-00917

uni-app显示ORA-00917: 缺失逗号

ORA-00917: missing comma

java执行sql报错 ora-00917 missing comma ,可是sql在后台打印出来的我贴在plsql中就可以执行

如果在过程中不存在 Oracle 插入

Oracle查询查找表中不存在的记录?