2011-08-15 60 views
2

我在MSSQL中使用了以下示例並希望將其轉換爲Oracle。 @@ ROWCOUNT在Oracle中無效,並想知道是否有辦法做同樣的事情。將此SQL方法轉換爲Oracle

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

回答

2

的PL/SQL當量是:

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

Oracle支持的merge語法:

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

這在我看來就像一個UPDATE-或-INSERT(UPSERT)操作。執行此操作的標準SQL方法是使用MERGE語句。 Oracle 10g和SQL Server 2008都支持MERGE,因此如果堅持使用該方法,您將擁有可在兩種平臺上均可使用的解決方案。