2017-10-20 29 views
0

D'abord, j'ai besoin de vérifier si spOBJ_CopyInspectiontask a des erreurs, s'il n'y a pas d'erreurs, seulement ensuite procéder à l'instruction d'insertion.Appel de procédure à l'intérieur de la procédure

DECLARE @tblSystemId TABLE 
        (
         OldSysId int, NewSysId int, 
         OldTaskId int, NewTaskId int, 
         TaskObjectIds varchar(max) null 
        ); 

INSERT INTO @tblSystemId (OldSysId , NewSysId, OldTaskId, NewTaskId, TaskObjectIds)    
    EXEC dbo.spOBJ_CopyInspectiontask @UserId, @TargetCustomerId, @TargetContractId, @TargetSiteId, @SourceCustomerId, @OldTaskId, @SystemName, @Checkall, @CopyReports, @Return OUTPUT, @ObjectIds OUTPUT; 

Comment puis-je vérifier cela?

+0

Par défaut dans la transaction implicite pour insérer MS SQL Server doit être démarré. Donc, en cas d'erreurs lors de l'appel à dbo.spOBJ_CopyInspectiontask, toute la transaction sera annulée et aucune ligne insérée dans @tblSystemId par cette instruction. Pourquoi n'êtes-vous pas satisfait du comportement par défaut que j'ai décrit ci-dessus? –

Répondre

2

Peut-être que vous voulez un bloc try/catch:

BEGIN TRY 
    INSERT INTO @tblSystemId (OldSysId , NewSysId, OldTaskId, NewTaskId,TaskObjectIds)    
     EXEC dbo.spOBJ_CopyInspectiontask @UserId,@TargetCustomerId, @TargetContractId, @TargetSiteId, 
      @SourceCustomerId, @OldTaskId, @SystemName, @Checkall, @CopyReports, @Return OUTPUT, @ObjectIds OUTPUT; 
END TRY 
BEGIN CATCH 
    -- do something here in the event of failure 
END CATCH; 
+0

Laissez-moi essayer ... Merci –

+0

Fonctionne bien. Je vous remercie –