Я думаю, что ответ заключается в том факте, что SQL - это язык на основе множеств с несколькими процедурными элементами. Поскольку дизайнеры думали в терминах, основанных на множествах, они не думали, что обычный тип отладки, который есть в других языках, важен. Тем не менее, я думаю, что кое-что из этого меняется. Вы можете установить точки останова в SQL Server 2008. Я не использовал его на самом деле, так как у вас должны быть базы данных SQL Server 2008, прежде чем он будет работать, и большинство из нас по-прежнему SQL Server 2000. Но он доступен, и он позволяет вам пройти через вещи. У вас все еще будут проблемы, когда ваш оператор select имеет длину 150 строк, и он знает, что синтаксис неправильный, но он не может точно указать, где, поскольку это все одна команда.
Лично, когда я пишу длинный процедурный SP, я встраиваю в тестовый режим, который включает в себя отображение результатов моих действий, значений ключевых переменных в определенных точках, которые меня интересуют, и печать постов, которые позволяют мне знать, какие шаги были выполнены, а затем откатить все это обратно, когда сделано. Таким образом, я вижу, что произошло бы, если бы он работал по-настоящему, но не повредил бы ни одну из данных в базе данных, если я ошибся. Я считаю это очень полезным. Это может значительно увеличить размер вашего процесса, хотя. У меня есть шаблон, который я использую, и в нем сконфигурирована большая часть необходимой мне структуры, так что это не займет у меня много времени. Тем более, что я никогда не добавляю вкладыш. обновить или удалить процедуру без предварительной проверки соответствующего выбора, чтобы убедиться, что у меня есть нужные записи.