2011-08-15 2 views
2

J'ai l'exemple suivant utilisé dans MSSQL et je voulais le convertir en Oracle. Le @@ ROWCOUNT n'est pas valide dans Oracle et se demandait s'il existe une approche pour faire la même chose.Convertir cette approche SQL en Oracle

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

Répondre

2

L'équivalent PL/SQL est:

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

Oracle prend en charge la syntaxe merge:

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

Cela me semble comme une opération UPDATE ou INSERT (UPSERT). La méthode standard SQL pour ce faire utilise une instruction MERGE. Oracle 10g et SQL Server 2008 prennent tous deux en charge MERGE, donc si vous respectez cette méthode, vous aurez une solution qui fonctionne sur les deux plates-formes.

Questions connexes