演练:调试 T-SQL 用户定义的函数

更新:2007 年 11 月

本主题适用于:

版本

Visual Basic

C#

C++

Web Developer

速成版

主题不适用 主题不适用 主题不适用 主题不适用

标准版

主题不适用 主题不适用 主题不适用 主题不适用

专业团队版

主题适用 主题适用 主题适用 主题适用

表格图例:

主题适用

适用

主题不适用

不适用

主题适用,但命令默认情况下隐藏

默认情况下隐藏的一条或多条命令。

此示例在 AdventureWorks 数据库中使用一个现有的名为 ufnGetStock 的用户定义函数 (UDF)。该函数针对给定的 ProductID 返回存货的项数。

该示例创建调用几次该 UDF 的存储过程。该存储过程用不同的参数调用该 UDF,以便可以沿不同的执行路径通过该 UDF。此示例还阐释如何从一个 T-SQL 对象(存储过程)跳转到另一个 T-SQL 对象(函数)。这些步骤类似于 演练:调试 T-SQL 存储过程 中介绍的步骤。

在“服务器资源管理器”中还可以通过单步执行函数来执行直接数据库调试。

调试用户定义的函数

  1. 在一个新的 SQL Server 项目中,建立一个到 AdventureWorks 示例数据库的连接。有关更多信息,请参见如何:连接到数据库

  2. 使用下面示例部分中的代码创建一个新的存储过程,并将其命名为“Test_ufnGetStock”。有关更多信息,请参见 如何:使用 SQL Server 项目类型进行开发

  3. 在“Test_ufnGetStock”中设置断点。这是可选步骤,因为直接数据库调试使过程的第一行代码的行为类似于设置了断点。

  4. 在 UDF ufnGetStock 中设置断点。

    1. 通过在“服务器资源管理器”中右击“函数”节点,然后双击“ufnGetStock”图标,打开该 UDF 的源代码。

    2. 用左键单击 DECLARE 语句旁边的灰色空白以设置断点。

  5. 单步执行该存储过程。如果此过程有参数,则会出现“运行存储过程”对话框,并要求输入参数值。在这种情况下,所有参数都在存储过程内部经过硬编码。有关更多信息,请参见 如何:使用服务器资源管理器单步执行对象

  6. 尝试不同的调试功能。

    1. 使用 F11 键或“逐语句”按钮逐句通过代码。在 SELECT 语句处,如果再次按 F11,则将进入并单步执行 UDF。逐句通过该 UDF,直到退出该函数回到存储过程,然后继续调试。

    2. 根据输入参数的不同,您可以观察到该 UDF 中不同的执行路径。可以在“局部变量”窗口中查看 UDF 中的变量值,或通过将鼠标悬停在这些变量上也可以查看它们的值。

示例

这是调用用户定义的函数的存储过程的代码。

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

请参见

概念

调试 SQL

参考

服务器资源管理器/数据库资源管理器