【问题标题】:PL/SQL; Execute Function/Procedure Based On ConditionPL/SQL;根据条件执行功能/过程
【发布时间】:2014-05-22 15:53:50
【问题描述】:

我想对数据库中不存在的主题元组执行 INSERT 过程条件。

我不确定如何制定以下内容

IF !(SELECT a1, a2, a3, FROM table) THEN
    INSERT VALUES INTO TABLE (a1, a2, a3)
ELSE
    -- Do Nothing
END IF

我需要使用游标,抓取元组,然后根据过程的属性检查每个值吗?我想到了,但如果没有必要,我不想这样做。

【问题讨论】:

  • this answer 可以作为我需要的 MERGE 的合适示例使用吗?
  • 是的,除非您需要一个“无操作”来处理 WHEN MATCHED 情况。我认为“当匹配时为空”是允许的,但显然不是,它必须类似于“当匹配时然后 t.a1 = t.a1”。我想我已经意识到你真正需要什么,并会发布答案。
  • @TonyAndrews - 如果您不想使用 WHEN MATCHED 子句,请不要使用它 - 它是可选的。
  • @Tony 提供答案,我会提名。

标签: plsql oracle11g


【解决方案1】:

你可以这样做:

insert into table (col1, col2, col3)
select 'a1', 'a2', 'a3' from dual
where not exists
   (select null from table where col1='a1' and col2='a2' and col3='a3');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    相关资源
    最近更新 更多