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