В SQL Server, как я могу разделить большое количество операторов tsql на пакеты? - PullRequest
2 голосов
/ 27 мая 2010

Как в SQL Server разделить большое количество операторов tsql на пакеты? Должен ли я использовать оператор GO в хранимых процедурах или функциях? Должен ли я использовать оператор GO в явной ситуации управления транзакциями (между BEGIN TRANSACTION и ROLLBACK TRANSACTION или COMMIT TRANSACTION )? Есть ли лучшие практики по этой теме? Большое спасибо заранее.

1 Ответ

5 голосов
/ 27 мая 2010

GO на самом деле не является ключевым словом SQL - оно интерпретируется SQL Server Management Studio . Таким образом, вы не можете использовать его в хранимых процедурах.

Если вы пишете сценарий для SSMS, вы можете использовать GO внутри транзакции, но будьте осторожны с обработкой ошибок - в случае возникновения ошибки транзакция будет откатываться, но будет отменен только текущий пакет , а затем выполнение будет продолжено до следующего пакета. См этот вопрос .

Что касается передового опыта, лично я просто использую GO только тогда, когда мне нужно (например, при создании нескольких хранимых процедур - у каждой должна быть своя партия). Чем меньше GO операторов, тем меньше работы по обработке ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...