将SQL转换为PL / SQL For" IF NOT EXISTS"

时间:2016-12-02 10:03:11

标签: sql oracle plsql

我有一些SQL代码,我想将其转换为适用于Oracle的PL / SQL,但是我很难找到一个很好的替代方案,因为它不会出现#34; IF NOT EXISTS"功能。有人可以帮忙吗?

这是需要转换的SQL:

IF NOT EXISTS (SELECT * FROM SEC_ConfigSetting WHERE ItemKey='Version')
    BEGIN
        INSERT INTO SEC_ConfigSetting
               ([VersionNo]
               ,[Section]
               ,[ItemKey]
               ,[ItemValue]
               ,[ItemType])
         VALUES
               (1,4,'Version','V1.4.0',0)
    END
ELSE
    BEGIN
        /* Update database version */
        UPDATE [SEC_ConfigSetting]
        SET [ItemValue] = 'V1.4.0'     
        WHERE ItemKey='Version'
    END

1 个答案:

答案 0 :(得分:4)

您正在做的事情看起来需要merge

merge into SEC_ConfigSetting s
  using (select 1 VersionNo, 4 Section,'Version' ItemKey,'V1.4.0' ItemValue, 0 ItemType from dual) d
  on (s.ItemKey = d.ItemKey)
when matched then update set
  ItemValue = d.ItemValue
when not matched then    
  INSERT (VersionNo, Section,ItemKey,ItemValue,ItemType)
  VALUES (d.VersionNo, d.Section, d.ItemKey, d.ItemValue, d.ItemType);

这可以用作普通SQL或PL / SQL脚本的一部分。