将此SQL方法转换为Oracle

时间:2011-08-15 11:13:32

标签: sql-server oracle oracle10g

我在MSSQL中使用了以下示例,并希望将其转换为Oracle。 @@ ROWCOUNT在Oracle中无效,并且想知道是否有办法做同样的事情。

UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
    INSERT INTO Table1 VALUES (...)

3 个答案:

答案 0 :(得分:3)

Oracle支持merge语法:

merge into Table1 using dual on (Column1 = 'SomeValue')
     when not matched then insert (...) values (...)
     when matched then update set ...;

答案 1 :(得分:3)

这看起来像UPDATE-or-INSERT(UPSERT)操作。标准SQL方法是使用MERGE语句。 Oracle 10g和SQL Server 2008都支持MERGE,因此如果您坚持使用该方法,您将拥有适用于这两种平台的解决方案。

答案 2 :(得分:2)

PL / SQL等价物是:

UPDATE Table1 SET ... WHERE Column1='SomeValue';
IF SQL%ROWCOUNT=0 THEN
    INSERT INTO Table1 VALUES (...);
END IF;