本主题适用于:
Visual Studio 旗舰版 |
Visual Studio 高级专业版 |
Visual Studio 专业版 |
Visual Studio 速成版 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
本示例在 AdventureWorks2008 数据库中使用名为 ufnGetStock 的现有用户定义的函数 (UDF)。此函数返回给定 ProductID 的库存数。
该示例创建多次调用 UDF 的存储过程。存储过程通过不同参数调用 UDF,因此可以跟踪该 UDF 中的不同执行路径。该示例还演示了从一个 Transact-SQL 对象(存储过程)跳转到另一个对象(函数)的过程。这些步骤与 演练:调试 Transact-SQL 存储过程 中的步骤类似。
还可以通过单步执行**“服务器资源管理器”**中的函数执行直接数据库调试。
调试用户定义的函数
在新的 SQL Server 项目中,建立一个到 AdventureWorks2008 示例数据库的连接。有关更多信息,请参见如何:使用服务器资源管理器连接到数据库。
使用下面示例部分中的代码创建一个新的存储过程,并将它命名为 Test_ufnGetStock。有关更多信息,请参见如何:使用 SQL Server 数据库项目或服务器项目进行调试。
在 Test_ufnGetStock 中设置断点。此操作是可选的,因为直接数据库调试会导致过程的第一行充当一个断点。
在 UDF ufnGetStock 中设置断点。
通过右击**“服务器资源管理器”中的“函数”节点,再双击“ufnGetStock”**图标,打开 UDF 的源代码。
左键单击 DECLARE 语句旁边的灰色空白处以设置断点。
单步执行存储过程。如果过程具有参数,将出现**“运行存储过程”**对话框,询问这些参数的值。在这种情况下,存储过程内的参数都已硬编码。有关更多信息,请参见如何:使用服务器资源管理器单步执行对象。
尝试不同的调试功能。
使用 F11 键或**“单步执行”**按钮来逐句通过代码。在 SELECT 语句处,再次按 F11 键时,将单步执行 UDF。逐句通过 UDF,直到退回到存储过程后再继续。
在 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