2017-09-15 4 views
1
Declare @IsInserted Bit 
Declare @Date Datetime=Getdate(); 

MERGE MASTERSUBJECT AS T 
USING #TEMPSUBJECT AS S 
ON T.ID=S.ID 
WHEN NOT MATCHED BY TARGET THEN 
INSERT (TITLE,OREDRNO,DTMADD,[STATUS]) 
VALUES(S.TITLE,(select MAX(OREDRNO)+1 from 
MASTERSUBJECT),@DATE,1) 
SET @IsInserted=1  /* IF the record is inserted*/ 

Dans le code ci-dessus que je veux mettre à jour la variable @IsInserted à 1 si l'insert est réussie.Réglage de la valeur variable à l'aide de fusion opérateur dans SQL Server

+0

ce qui est votre erreur actuelle? –

+1

1. Vous n'avez pas besoin de MERGE ici; 2. Utilisez @@ ROWCOUNT après INSERT pour le vérifier –

+0

Désolé, mais je veux utiliser la fusion si vous avez un moyen de le faire alors s'il vous plaît faites le moi savoir –

Répondre

1

Pour la fusion, vous n'avez pas besoin de variable ici. Utilisez simplement la clause OUTPUT. C'est ce pour quoi il a été conçu.

OUTPUT 
    $action, 
    inserted.*, 

Ou, une alternative ...

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