【问题标题】:Consulting if a record exist before inserting in Oracle在Oracle中插入之前咨询记录是否存在
【发布时间】:2013-11-08 23:58:17
【问题描述】:

我正在 oracle 中开发一个查询,如果某些记录不存在 (SELECT) 以进行 INSERT 步骤,则该查询会进行咨询,这是我的代码

IF
    (SELECT COUNT(*) FROM (SELECT * FROM HEX_KE_LOC WHERE CLVE_LOC = '20000')) = 0
THEN
    {INSERT INTO 
            HEX_KE_LOC (CLVE_LOC,CLVE_STDO,MUN,CLVE_PAIS,UID_BUS_UNI,CLVE_ALTR,DSC,CIT,ZIPCODE) 
    VALUES   
            ('20000','AGS','001','MX','0014','1','Zona Centro','01','20000');
      }
END IF;

但我不能让它工作,任何帮助我将不胜感激

【问题讨论】:

  • 您是否收到任何错误消息?如果是这样,请编辑您的问题以包含它。我认为需要为所有派生表指定一个别名,例如:SELECT COUNT(*) FROM (SELECT * FROM HEX_KE_LOC WHERE CLVE_LOC = '20000') AS record_check

标签: sql select insert oracle11g


【解决方案1】:

我首选的方法是使用不带更新子句的MERGE 语句:

MERGE INTO HEX_KE_LOC USING dual
   ON ( CLVE_LOC = '20000' )
WHEN NOT MATCHED THEN INSERT (CLVE_LOC,CLVE_STDO,MUN,CLVE_PAIS,UID_BUS_UNI,CLVE_ALTR,DSC,CIT,ZIPCODE) 
    VALUES ('20000','AGS','001','MX','0014','1','Zona Centro','01','20000');

【讨论】:

    猜你喜欢
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多