在调试期间,我们能否在 SQL Server Management Studio (SSMS) 中查看表值变量中的值(行和单元格)?如果是,如何?
10 回答
DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)
在要查看表内容的位置插入上述语句。表的内容将在本地窗口中呈现为 XML,或者您可以添加@v
到监视窗口中。
这尚未根据此 Microsoft Connect 链接实现: Microsoft Connect
这个项目https://github.com/FilipDeVos/sp_select有一个存储过程sp_select
,允许从临时表中进行选择。
用法:
exec sp_select 'tempDb..#myTempTable'
在调试存储过程时,您可以打开一个新选项卡并运行此命令以查看临时表的内容。
在存储过程中创建一个全局临时表 ##temptable 并在存储过程中编写一个插入查询,将表中的数据插入到这个临时表中。
完成此操作后,您可以通过打开一个新的查询窗口来检查临时表的内容。只需使用“从##temptable中选择*”
只需使用选择查询来显示表变量,无论您要检查的位置。
http://www.simple-talk.com/sql/learn-sql-server/management-studio-improvements-in-sql-server-2008/
我得出的结论是,如果没有任何插件,这是不可能的。
SQL Server Profiler 2014 列出了表值参数的内容。也可能在以前的版本中工作。在存储过程组和 TextData 列中启用 SP:Starting 或 RPC:Completed 事件,当您单击日志中的条目时,您将获得表变量的插入语句。然后,您可以复制文本并在 Management Studio 中运行。
样本输出:
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
对不起,伙计们,我参加聚会有点晚了,但是对于以后偶然发现这个问题的任何人,我发现在存储过程中执行此操作的最简单方法是:
- 使用在顶部声明和初始化的任何过程参数创建一个新查询。
- 粘贴到程序的主体中。
- 在使用数据初始化表变量后立即添加一个好的老式选择查询。
- 如果 3. 不是过程中的最后一条语句,请在同一行设置断点,开始调试并直接继续到断点。
- 利润!!
messi19 的答案应该是公认的恕我直言,因为它比我的简单并且大部分时间都可以完成工作,但是如果您像我一样并且在要检查的循环内有一个表变量,那么它可以很好地完成工作无需太多努力或外部 SSMS 插件。