2017-10-20 79 views
0

首先我需要检查一下,如果spOBJ_CopyInspectiontask有任何错误,如果没有错误,那么就进入插入语句。程序内程序调用

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; 

我该如何检查?

+0

默认情况下,在插入MS SQL Server的隐式事务应启动。因此,如果在调用dbo.spOBJ_CopyInspectiontask期间发生任何错误,整个事务将被回滚,并且没有行通过此语句插入到@tblSystemId中。为什么你;我不喜欢上面描述的默认行为? –

回答

2

也许你想要一个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

让我试试...谢谢 –

+0

工作正常。谢谢 –