Преобразуйте этот подход SQL в Oracle - PullRequest
2 голосов
/ 15 августа 2011

У меня есть следующий пример, используемый в MSSQL, и я хотел преобразовать его в Oracle.@@ ROWCOUNT недействителен в Oracle, и ему было интересно, есть ли подход, чтобы сделать то же самое.

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

Ответы [ 3 ]

3 голосов
/ 15 августа 2011

Oracle поддерживает синтаксис merge:

merge into Table1 using dual on (Column1 = 'SomeValue')
     when not matched then insert (...) values (...)
     when matched then update set ...;
3 голосов
/ 15 августа 2011

Это выглядит как операция UPDATE-or-INSERT (UPSERT). Стандартный способ SQL сделать это - использовать инструкцию MERGE. Oracle 10g и SQL Server 2008 поддерживают MERGE, поэтому, если вы будете придерживаться этого метода, у вас будет решение, которое работает на обеих платформах.

2 голосов
/ 15 августа 2011

Эквивалент PL / SQL:

UPDATE Table1 SET ... WHERE Column1='SomeValue';
IF SQL%ROWCOUNT=0 THEN
    INSERT INTO Table1 VALUES (...);
END IF;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...