Вместо IF..ELSE вы можете проверять значение @@ Rowcount (или некоторых других критериев) после каждого выбора и либо возвращать, либо переходить к метке в конце скрипта, если значение больше 0 Это все еще будет много условных проверок, но с вложением будет не так сложно справиться.
, например
declare @vals table (id int)
Declare @rc int
Insert into @vals (id) values (1)
Select * from @vals
set @rc = @@ROWCOUNT
if @rc <> 0
Begin
Print 'Exiting Early'
return
End
Select * from @vals
Select * from @vals
Select * from @vals
Select * from @vals
Select * from @vals
или
declare @vals table (id int)
Declare @rc int
Insert into @vals (id) values (1)
Select * from @vals
set @rc = @@ROWCOUNT
if @rc <> 0
Begin
Print 'Exiting Early'
GOTO EarlyExit
End
Select * from @vals
Select * from @vals
Select * from @vals
Select * from @vals
Select * from @vals
EarlyExit:
Print 'We are done here'