如何在调试存储过程时执行 SQL 查询

7

我正在调试一个在SQL Server 2008上的存储过程,代码如下:

INSERT INTO #tempTable (ID, Name)
  SELECT ID, Name FROM dbo.MYTABLE WHERE dbo.MYTABLE.Old >= 15

我该如何在调试时查看#tempTable中的数据?

查询临时数据库并找到您的表,但它的名称已更改,类似于tempTable00000001。 - Lukasz Szozda
通常使用SELECT语句。为什么? - Tab Alleman
你想要实现什么目标?你的存储过程将数据插入到临时表中,而你想从另一个会话中查看它吗?如果不是,只需在此之后添加简单的 SELECT * FROM #tempTable,然后修改存储过程并继续进行调试。调试完成后,请注释或删除该语句。 - Lukasz Szozda
3个回答

3
在SQL Server Management Studio中,在调试存储过程时无法直接执行查询,这个功能目前还没有被实现(我认为)。您只能在本地调试窗口中查看局部变量的值。
有一些解决方法可以在调试模式下查看临时表的值:
1)在存储过程中,插入数据到#temptable后,添加以下代码行以获取temptable值的xml表变量,然后您可以以xml格式在本地调试窗口中检查这些值。
  --inserting data into temp table
  INSERT INTO #tempTable (ID, Name)
  SELECT ID, Name FROM dbo.MYTABLE WHERE dbo.MYTABLE.Old >= 15

  --to see records of temp table
  DECLARE @temptable XML 
  SET @temptable = (SELECT * FROM #@temptable FOR XML AUTO)

2) 您可以将本地临时表(#temptable)转换为全局临时表(##temptable),因此当您在临时表中插入数据时,您可以打开新的查询窗口,并能够使用 select 查询查看全局临时表记录。


0

-1

尽管SQL Server Management Studio具有一些调试功能,但我认为它们相当无用。

我认为没有像Visual Studio那样的SQL Server调试工具,可以在运行时提供逐步信息。

通常开发人员调试SQL Server代码的方式是使用打印语句,对于存储过程,取出sp定义,为每个参数声明一个变量,硬编码变量的值并执行较小的逻辑代码块以查看正在进行的情况。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接