Пошаговое руководство. Отладка определяемой пользователем функции Transact-SQL
Этот раздел применим для следующих версий:
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
В этом примере используется существующая в базе данных AdventureWorks2008 определяемая пользователем функция с именем ufnGetStock.Эта функция возвращает число элементов с указанным ProductID на складе.
В этом примере создается хранимая процедура, которая несколько раз вызывает данную определяемую пользователем функцию.Хранимая процедура вызывает определяемую пользователем функцию с разными параметрами, поэтому в определяемой пользователем функции можно проследить разные пути исполнения.Этот пример также иллюстрирует переход из одного объекта Transact-SQL, хранимой процедуры, в другой, функцию.Эти шаги похожи на описанные в разделе Пошаговое руководство. Отладка хранимой процедуры Transact-SQL.
Кроме того, можно выполнить прямую отладку базы данных, зайдя в функцию из Обозревателя серверов.
Отладка определяемой пользователем функции
Установите в новом проекте SQL Server соединение с образцом базы данных AdventureWorks2008.Дополнительные сведения см. в разделе Как подключиться к базе данных с помощью обозревателя серверов.
Создайте новую хранимую процедуру с помощью кода из первого раздела приведенного далее примера и назовите ее Test_ufnGetStock.Дополнительные сведения см. в разделе Как выполнить отладку из проекта базы данных или сервера SQL Server.
Установите точку останова на Test_ufnGetStock.Это делать не обязательно, поскольку при прямой отладке базы данных первая строка процедуры является точкой останова.
Установите точки останова в определяемой пользователем функции ufnGetStock.
Откройте исходный код определяемой пользователем функции, для этого щелкните правой кнопкой мыши узел Функции в Обозревателе серверов, а затем дважды щелкните значок ufnGetStock.
Щелкните в серой области слева от инструкции DECLARE, чтобы установить точку останова.
Зайдите в хранимую процедуру.Если хранимая процедура имеет параметры, откроется диалоговое окно Выполнение хранимой процедуры с запросом значений для этих параметров.В этом случае все параметры жестко прописаны внутри хранимой процедуры.Дополнительные сведения см. в разделе Как перейти к объекту базы данных с помощью обозревателя сервера.
Попробуйте выполнить другие функции отладки.
Пройдите по коду, нажимая клавишу F11 или кнопку Шаг с заходом.На инструкции SELECT при нажатии клавиши F11 будет осуществлен переход в пользовательскую функцию.Пройдите по пользовательской функции до возврата назад в хранимую процедуру и продолжите.
В зависимости от входных параметров в пользовательской функции можно наблюдать разные пути выполнения.Значения переменных можно смотреть в окне Локальные переменные либо наведя курсор на переменную.
Пример
Это код хранимой процедуры, вызывающей определяемую пользователем функцию.
ALTER PROCEDURE Test_ufnGetStock
AS
SELECT dbo.ufnGetStock(1) as CurrentStock -- non-zero inventory
SELECT dbo.ufnGetStock(316) as CurrentStock -- zero inventory
SELECT dbo.ufnGetStock(5) as CurrentStock -- no such product