MSDN дает следующий синтаксис и объяснение:Конец тела SQL хранится procecdure (где это?)
{ [ BEGIN ] sql_statement [;] [ ...n ] [ END ] }
один или несколько операторов Transact-SQL, содержащие тело процедура. Вы можете использовать необязательные ключевые слова BEGIN и END, чтобы заключить в них . Для получения информации см. Разделы «Лучшие практики», «Общие вопросы», «Замечания и ограничения и ограничения».
По существу это последовательность операторов SQL, которая не знает, где, если нет пары BEGIN/END. Блок BEGIN/END - это, по сути, инструкция. Может ли тело процедуры состоять из двух последовательных блоков BEGIN/END? (Скорее всего нет, но я не вижу его нигде.) Когда пара парсеров BEGIN/END не может решить, что процедура завершилась на любом SQL-заявлении верхнего уровня. Где поймать?
Замечания и ограничения раздел также не очень полезны.
Хм, похоже, я не могу отправить несколько инструкций 'CREATE POC' в одной партии не из SSMS вообще? Ex, если я использую ODBC? – Buran
@Buran - одна партия == одна хранимая процедура, как мы надеемся, ясно из ссылок/цитат, которые я редактировал. –
Это не связано напрямую. Я думал, что я могу сценарий всех объектов базы данных (независимо) в большой файл SQL, а затем выполнить этот файл из моего приложения ODBC, чтобы воссоздать все, что говорят на другом сервере. Похоже, что это вообще невозможно. Правильно? – Buran