代码之家  ›  专栏  ›  技术社区  ›  Faiz

在T-SQL中,如何在调试时查看表变量的值?

  •  166
  • Faiz  · 技术社区  · 16 年前

    在调试期间,我们能否在SQLServerManagementStudio(SSMS)中看到表值变量中的值(行和单元格)?如果是,如何进行?

    enter image description here

    9 回复  |  直到 11 年前
        1
  •  33
  •   rortega    16 年前

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

        2
  •  324
  •   Faiz    11 年前
    DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)
    

    @v

    enter image description here

        3
  •  18
  •   James Hulse    14 年前

    https://github.com/FilipDeVos/sp_select sp_select 允许从临时表中进行选择。

    用法:

    exec sp_select 'tempDb..#myTempTable'
    

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

        4
  •  7
  •   messi19    11 年前

    完成后,您可以通过打开一个新的查询窗口来检查临时表的内容。 只需使用“select*from###tentable”

        5
  •  4
  •   Sousuke    6 年前

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

    enter image description here

        6
  •  1
  •   solairaja    16 年前

    只需使用select查询来显示表varialble,您可以在其中进行检查。

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

        7
  •  0
  •   Faiz    16 年前

        8
  •  0
  •   user3285954    12 年前

    SQL Server Profiler 2014列出了表值参数的内容。可能在以前的版本中也适用。 在存储过程组和TextData列中启用SP:Starting或RPC:Completed事件,当您单击日志中的条目时,您将拥有表变量的insert语句。 然后可以复制文本并在ManagementStudio中运行。

    样本输出:

    declare @p1 dbo.TableType
    insert into @p1 values(N'A',N'B')
    insert into @p1 values(N'C',N'D')
    
    exec uspWhatever @PARAM=@p1
    
        9
  •  -3
  •   zero323 little_kid_pea    10 年前

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

    SELECT * FROM @d
    
        10
  •  -3
  •   Kenny83    10 年前

    抱歉,各位,我来晚了一点,但对于以后偶然发现这个问题的人,我发现在存储过程中实现这一点的最简单方法是:

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

    梅西的答案应该是被IMHO接受的,因为它比我的答案简单,而且可以完成任务 当然可以,但是如果你像我一样,在一个循环中有一个表变量,你想检查它,这就可以很好地完成这项工作,而不需要太多的努力或外部SSMS插件。