Sql server 将此SQL方法转换为Oracle

Sql server 将此SQL方法转换为Oracle,sql-server,oracle,oracle10g,Sql Server,Oracle,Oracle10g,我在MSSQL中使用了以下示例,并希望将其转换为Oracle。@ROWCOUNT在Oracle中无效,我想知道是否有一种方法可以执行相同的操作 UPDATE Table1 SET (...) WHERE Column1='SomeValue' IF @@ROWCOUNT=0 INSERT INTO Table1 VALUES (...) PL/SQL等价物是: UPDATE Table1 SET ... WHERE Column1='SomeValue'; IF SQL%ROWCOUN

我在MSSQL中使用了以下示例,并希望将其转换为Oracle。@ROWCOUNT在Oracle中无效,我想知道是否有一种方法可以执行相同的操作

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

PL/SQL等价物是:

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

Oracle支持
合并
语法:

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

在我看来,这类似于更新或插入(UPSERT)操作。执行此操作的标准SQL方法是使用MERGE语句。Oracle 10g和SQL Server 2008都支持合并,因此如果您坚持使用该方法,您将拥有一个在这两种平台上都能工作的解决方案