197

在调试期间,我们能否在 SQL Server Management Studio (SSMS) 中查看表值变量中的值(行和单元格)?如果是,如何?

在此处输入图像描述

4

10 回答 10

328
DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)

在要查看表内容的位置插入上述语句。表的内容将在本地窗口中呈现为 XML,或者您可以添加@v到监视窗口中。

在此处输入图像描述

于 2011-07-19T14:13:09.323 回答
32

这尚未根据此 Microsoft Connect 链接实现: Microsoft Connect

于 2010-10-21T11:44:56.163 回答
20

这个项目https://github.com/FilipDeVos/sp_select有一个存储过程sp_select,允许从临时表中进行选择。

用法:

exec sp_select 'tempDb..#myTempTable'

在调试存储过程时,您可以打开一个新选项卡并运行此命令以查看临时表的内容。

于 2011-11-08T21:35:46.593 回答
7

在存储过程中创建一个全局临时表 ##temptable 并在存储过程中编写一个插入查询,将表中的数据插入到这个临时表中。

完成此操作后,您可以通过打开一个新的查询窗口来检查临时表的内容。只需使用“从##temptable中选择*”

于 2015-02-10T15:02:36.210 回答
4

如果您使用的是 SQL Server 2016 或更新版本,您还可以选择它作为 JSON 结果并在 JSON Visualizer 中显示,它比 XML 更容易阅读,并允许您过滤结果。

DECLARE @v nvarchar(max) = (SELECT * FROM Suppliers FOR JSON AUTO)

在此处输入图像描述

于 2020-04-07T12:05:15.227 回答
1

只需使用选择查询来显示表变量,无论您要检查的位置。

http://www.simple-talk.com/sql/learn-sql-server/management-studio-improvements-in-sql-server-2008/

于 2009-12-14T13:21:41.070 回答
0

我得出的结论是,如果没有任何插件,这是不可能的。

于 2010-01-06T17:21:12.757 回答
0

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
于 2014-08-21T15:48:40.413 回答
-3

为什么不直接选择表格并以这种方式查看变量?

SELECT * FROM @d
于 2016-03-14T19:59:46.730 回答
-3

对不起,伙计们,我参加聚会有点晚了,但是对于以后偶然发现这个问题的任何人,我发现在存储过程中执行此操作的最简单方法是:

  1. 使用在顶部声明和初始化的任何过程参数创建一个新查询。
  2. 粘贴到程序的主体中。
  3. 在使用数据初始化表变量后立即添加一个好的老式选择查询。
  4. 如果 3. 不是过程中的最后一条语句,请在同一行设置断点,开始调试并直接继续到断点。
  5. 利润!!

messi19 的答案应该是公认的恕我直言,因为它比我的简单并且大部分时间都可以完成工作,但是如果您像我一样并且在要检查的循环内有一个表变量,那么它可以很好地完成工作无需太多努力或外部 SSMS 插件。

于 2016-05-13T01:45:17.290 回答