34,590
社区成员
发帖
与我相关
我的任务
分享
create proc p_总存储过程
as
begin
exec p_存储过程1
exec p_存储过程2
exec p_存储过程3
end
有没有什么办法,假如第一个存储过程执行失败(报错或者其他原因)的时候不影响存储过程2的执行?
create proc #p1 as raiserror('#p1', 10, 1) with nowait; select 1/0;
go
create proc #p2 as raiserror('#p2', 10, 1) with nowait; raiserror('error 16', 16, 1);
go
create proc #p3 as raiserror('#p3', 10, 1) with nowait; select 1;
go
create proc #pall
as
BEGIN TRY;
exec #p1;
END TRY BEGIN CATCH;
PRINT 'error1'
END CATCH;
BEGIN TRY;
exec #p2;
END TRY BEGIN CATCH;
PRINT 'error2'
END CATCH;
BEGIN TRY;
exec #p3;
END TRY BEGIN CATCH;
PRINT 'error3'
END CATCH;
go
exec #pall
go
drop proc #pall, #p1, #p2, #p3;
create proc #p1 as raiserror('#p1', 10, 1) with nowait; select 1/0;
go
create proc #p2 as raiserror('#p2', 10, 1) with nowait; raiserror('error 16', 16, 1);
go
create proc #p3 as raiserror('#p3', 10, 1) with nowait; select 1;
go
create proc #pall
as
exec #p1;
exec #p2;
exec #p3;
go
exec #pall
go
drop proc #pall, #p1, #p2, #p3;