Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Utilizzo dell'output per impostare una variabile in un'istruzione merge

No, devi usare una variabile di tabella con OUTPUT

Tuttavia, puoi farlo...

...
WHEN MATCHED THEN 
    UPDATE
    SET
       @int = ID,
       somecolumn = 'something'
WHEN NOT MATCHED THEN
    INSERT 
    VALUES ('stringtomatch',
        'something');

SET @int = ISNULL(@int, SCOPE_IDENTITY());

"assegna in UPDATE" è stata per molto tempo una sintassi valida per SQL Server. Vedi MERGE su MSDN anche. Entrambi dicono questo: