在SQL Server Management Studio(SSMS)调试期间,我们是否可以查看表值变量中的值(行和单元格)?如果可以,如何操作?
在SQL Server Management Studio(SSMS)调试期间,我们是否可以查看表值变量中的值(行和单元格)?如果可以,如何操作?
DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)
在您想要查看表内容的位置插入上述语句。表的内容将以XML形式呈现在本地窗口中,或者您可以在观察窗口中添加@v
。
根据此Microsoft Connect链接显示,该功能尚未实现。
这个项目 https://github.com/FilipDeVos/sp_select 包含了一个存储过程 sp_select
,它可以从临时表中进行选择。
用法:
exec sp_select 'tempDb..#myTempTable'
在调试存储过程时,你可以打开一个新标签页并运行此命令以查看临时表的内容。
在存储过程中创建一个全局临时表##temptable,并编写一个插入查询语句将您的表中的数据插入到此临时表中。
完成后,您可以通过打开新的查询窗口来检查临时表的内容。只需使用"select * from ##temptable"即可。
SQL Server Profiler 2014可以列出表值参数的内容。在之前的版本中也可能适用。 在存储过程组和TextData列中启用SP:Starting或RPC:Completed事件,当您单击日志中的条目时,将显示表变量的插入语句。 然后,您可以复制文本并在管理工作室中运行。
示例输出:
declare @p1 dbo.TableType
insert into @p1 values(N'A',N'B')
insert into @p1 values(N'C',N'D')
exec uspWhatever @PARAM=@p1
我得出结论,没有任何插件是不可能实现的。
SELECT * FROM @d
SELECT * FROM @Table
不会将结果输出到结果窗口。 - StingyJack抱歉,我有点晚来参加派对,但是对于任何在以后的日期偶然发现这个问题的人,我发现在存储过程中最简单的方法是:
messi19的答案应该是被接受的,在我看来,因为它比我的更简单,并且大多数情况下都能胜任,但如果像我一样,您想要检查循环内部的表变量,那么这种方法可以轻松地完成工作,而无需太多的努力或外部SSMS插件。
DECLARE @v nvarchar(max) = (SELECT * FROM <tablename> FOR JSON AUTO)
该语句可以将指定表格中的数据转换成 JSON 格式,并将其赋值给变量 @v。 - Sousuke