我在MSSQL中使用了以下示例並希望將其轉換爲Oracle。 @@ ROWCOUNT在Oracle中無效,並想知道是否有辦法做同樣的事情。將此SQL方法轉換爲Oracle
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
IF @@ROWCOUNT=0
INSERT INTO Table1 VALUES (...)
我在MSSQL中使用了以下示例並希望將其轉換爲Oracle。 @@ ROWCOUNT在Oracle中無效,並想知道是否有辦法做同樣的事情。將此SQL方法轉換爲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
語法:
merge into Table1 using dual on (Column1 = 'SomeValue')
when not matched then insert (...) values (...)
when matched then update set ...;
這在我看來就像一個UPDATE-或-INSERT(UPSERT)操作。執行此操作的標準SQL方法是使用MERGE語句。 Oracle 10g和SQL Server 2008都支持MERGE,因此如果堅持使用該方法,您將擁有可在兩種平臺上均可使用的解決方案。