Как просмотреть данные в табличных переменных во время сеанса отладки в MS SQL Management Studio 2012?
Я хотел бы отладить сложный скрипт T-SQL с помощью SSMS 2012.
Я могу запустить скрипт в режиме отладки и разместить точки останова, а также шаг через мой скрипт, но я не вижу значений, хранящихся в моих переменных таблицы.
на Locals
окно я вижу все эти переменные, но их значение отображается как (table)
:
нет способа просмотреть содержимое переменной через контекстное меню или нажав на кнопку переменная.
Я попытался использовать Immediate Window
для запуска запроса к переменной таблицы, но это, похоже, тоже не работает.
любая идея, как я могу получить значения из моей таблицы переменных в режиме отладки?
3 ответов
хотя я не могу найти никакой документации, нигде, в которой явно указано, что вы не можете проверять переменные таблицы, я не верю, что это возможно. От отладчик Transact-SQL
жители и посмотреть. Эти окна отображают выделенные выражения Transact-SQL. выражения являются предложениями Transact-SQL, которые оцениваются в одно скалярное выражение. Отладчик Transact-SQL поддерживает просмотр выражения, ссылающиеся на переменные Transact-SQL, параметры или встроенные функции с именами, начинающимися с @@. В этих окнах также отображаются значения данных, которые в настоящее время назначены выражениям.
(выделено)
то есть вы можете проверять только скаляры.
Что касается вашей попытки использовать немедленное окно,ограничения на команду и функции отладчика говорит:
на немедленно отображается окно, но вы не можете сделать с ним ничего полезного, например, установить переменную в значение или запросить базу данных.
Я никогда не использовал отладчик много - каждый раз, когда я смотрел в него, я сталкиваюсь с такими ограничениями.
вот почему я все еще склонен использовать подходы"old-skool"/" printf " для отладки SQL - include extra SELECT *
s либерально по всему коду, показывающему текущее состояние столы, и дополнительные PRINT
или RAISERROR
сообщения, которые показывают другие государства и т. д. А затем просто запустите код нормально, пока не придадите ему форму.
используя следующий код, вы можете увидеть содержимое вашей таблицы как XML.
DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)
полезно проверить, что ваши операторы SELECT возвращают. Я проверил его и он работает.
подробнее здесь.
Я просто помещаю операторы select в свой скрипт, и он отображает его в окне результатов..
выберите * из @VarTable;
теперь, когда я шагаю через мой код и нажимаю select, он отобразит значения. Затем я либо комментирую их, когда закончу тестирование, либо устанавливаю флаг тестирования.
надеюсь, что это помогает