How to see the values of a table variable at debug time in T-SQL?

前端 未结 10 1931
悲哀的现实
悲哀的现实 2020-11-29 15:30

Can we see the values (rows and cells) in a table valued variable in SQL Server Management Studio (SSMS) during debug time? If yes, how?

相关标签:
10条回答
  • 2020-11-29 16:11

    SQL Server Profiler 2014 lists the content of table value parameter. Might work in previous versions too. Enable SP:Starting or RPC:Completed event in Stored Procedures group and TextData column and when you click on entry in log you'll have the insert statements for table variable. You can then copy the text and run in Management Studio.

    Sample output:

    declare @p1 dbo.TableType
    insert into @p1 values(N'A',N'B')
    insert into @p1 values(N'C',N'D')
    
    exec uspWhatever @PARAM=@p1
    
    0 讨论(0)
  • 2020-11-29 16:17

    Just use the select query to display the table varialble, where ever you want to check.

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

    0 讨论(0)
  • 2020-11-29 16:24

    This project https://github.com/FilipDeVos/sp_select has a stored procedure sp_select which allows for selecting from a temp table.

    Usage:

    exec sp_select 'tempDb..#myTempTable'
    

    While debugging a stored procedure you can open a new tab and run this command to see the contents of the temp table.

    0 讨论(0)
  • 2020-11-29 16:27

    Sorry guys, I'm a little late to the party but for anyone that stumbles across this question at a later date, I've found the easiest way to do this in a stored procedure is to:

    1. Create a new query with any procedure parameters declared and initialised at the top.
    2. Paste in the body of your procedure.
    3. Add a good old fashioned select query immediately after your table variable is initialised with data.
    4. If 3. is not the last statement in the procedure, set a breakpoint on the same line, start debugging and continue straight to your breakpoint.
    5. Profit!!

    messi19's answer should be the accepted one IMHO, since it is simpler than mine and does the job most of the time, but if you're like me and have a table variable inside a loop that you want to inspect, this does the job nicely without too much effort or external SSMS plugins.

    0 讨论(0)
  • 2020-11-29 16:28

    That's not yet implemented according this Microsoft Connect link: Microsoft Connect

    0 讨论(0)
  • 2020-11-29 16:28
    DECLARE @v XML = (SELECT * FROM <tablename> FOR XML AUTO)
    

    Insert the above statement at the point where you want to view the table's contents. The table's contents will be rendered as XML in the locals window, or you can add @v to the watches window.

    enter image description here

    0 讨论(0)
提交回复
热议问题