2009-08-09 4 views
0

Я пытаюсь решить эту проблему.Завершение сценария после выполнения условия

У меня есть ряд операторов SELECT, как показано ниже.

SELECT Name FROM Table1 WHERE Name LIKE '%Tom%' 

SELECT Name From Table2 WHERE Name LIKE '%Tom%' 

. 
. 
. 

SELECT Name FROM Table10 WHERE Name Like '%Tom%' 

Без использования IF ELSE заявления, есть ли способ, что я могу завершить этот сценарий наполовину и вернуть выбор, как только выбирается то, без необходимости выполнения остального ЗЕЬЕСТА?

Cheers.

ответ

2

Вместо 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' 
+0

OMG конечно! Спасибо за это. Здесь есть медленное воскресенье. lol – super9

+0

np, рад, что я мог бы помочь. – cmsjr

Смежные вопросы