Что такое блоки операторов T-SQL? - PullRequest
6 голосов
/ 01 сентября 2011

При поиске чего-либо я могу найти статью MSDN , в которой говорится:

Безусловное завершение запроса или процедуры.RETURN является немедленным и полным и может использоваться в любой точке для выхода из процедуры, пакета или блока операторов .Заявления, следующие за RETURN, не выполняются.

Документация не приблизилась к конкретной ситуации, которую я изучал.Прочитав его, я понял, что не понимаю оператора Return и (более конкретно) определения «блоков операторов » так же, как думал.Итак ...

Что такое t-sql "операторский блок"?Они определены Begin ... End как скобки в C #, { ... } или чем-то еще целиком?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 01 сентября 2011

Они бывают разных вкусов (попробуйте, поймайте), но обычно они выглядят как

BEGIN
    PRINT 'I am a block'
    RETURN
    PRINT 'I am still in a block but you will not see me'
END    
PRINT 'Too late, we returned from the above block'
1 голос
/ 01 сентября 2011

Я бы согласился, что это предложение в документации вводит в заблуждение.

RETURN не просто выйдет из самого непосредственного блока BEGIN END (который может быть вложенным), но вернется из всей функции илипроцедура, и я не уверен, что на самом деле означает выход из пакета - возможно, в SSMS с разделителем GO, он будет продолжать запускать более поздние пакеты (я должен это проверить) - GO - это вещь на стороне клиента, поэтомуЯ не уверен, насколько полезна эта концепция на практике.

...