Поделиться через


Пошаговое руководство. Отладка определяемой пользователем функции Transact-SQL

Этот раздел применим для следующих версий:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional

Visual Studio Express

ms165047.DoesApplybmp(ru-ru,VS.100).gif ms165047.DoesApplybmp(ru-ru,VS.100).gif ms165047.DoesApplybmp(ru-ru,VS.100).gif ms165047.DoesNotApplybmp(ru-ru,VS.100).gif

В этом примере используется существующая в базе данных AdventureWorks2008 определяемая пользователем функция с именем ufnGetStock.Эта функция возвращает число элементов с указанным ProductID на складе.

В этом примере создается хранимая процедура, которая несколько раз вызывает данную определяемую пользователем функцию.Хранимая процедура вызывает определяемую пользователем функцию с разными параметрами, поэтому в определяемой пользователем функции можно проследить разные пути исполнения.Этот пример также иллюстрирует переход из одного объекта Transact-SQL, хранимой процедуры, в другой, функцию.Эти шаги похожи на описанные в разделе Пошаговое руководство. Отладка хранимой процедуры Transact-SQL.

Кроме того, можно выполнить прямую отладку базы данных, зайдя в функцию из Обозревателя серверов.

Отладка определяемой пользователем функции

  1. Установите в новом проекте SQL Server соединение с образцом базы данных AdventureWorks2008.Дополнительные сведения см. в разделе Как подключиться к базе данных с помощью обозревателя серверов.

  2. Создайте новую хранимую процедуру с помощью кода из первого раздела приведенного далее примера и назовите ее Test_ufnGetStock.Дополнительные сведения см. в разделе Как выполнить отладку из проекта базы данных или сервера SQL Server.

  3. Установите точку останова на Test_ufnGetStock.Это делать не обязательно, поскольку при прямой отладке базы данных первая строка процедуры является точкой останова.

  4. Установите точки останова в определяемой пользователем функции ufnGetStock.

    1. Откройте исходный код определяемой пользователем функции, для этого щелкните правой кнопкой мыши узел Функции в Обозревателе серверов, а затем дважды щелкните значок ufnGetStock.

    2. Щелкните в серой области слева от инструкции DECLARE, чтобы установить точку останова.

  5. Зайдите в хранимую процедуру.Если хранимая процедура имеет параметры, откроется диалоговое окно Выполнение хранимой процедуры с запросом значений для этих параметров.В этом случае все параметры жестко прописаны внутри хранимой процедуры.Дополнительные сведения см. в разделе Как перейти к объекту базы данных с помощью обозревателя сервера.

  6. Попробуйте выполнить другие функции отладки.

    1. Пройдите по коду, нажимая клавишу F11 или кнопку Шаг с заходом.На инструкции SELECT при нажатии клавиши F11 будет осуществлен переход в пользовательскую функцию.Пройдите по пользовательской функции до возврата назад в хранимую процедуру и продолжите.

    2. В зависимости от входных параметров в пользовательской функции можно наблюдать разные пути выполнения.Значения переменных можно смотреть в окне Локальные переменные либо наведя курсор на переменную.

Пример

Это код хранимой процедуры, вызывающей определяемую пользователем функцию.

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

См. также

Основные понятия

Отладка Transact-SQL

Другие ресурсы

Server Explorer/Database Explorer