Sql server 2005 如何将SELECT语句转储到;信息“;存储过程中的SQL Server mgmt studio中的窗格?

Sql server 2005 如何将SELECT语句转储到;信息“;存储过程中的SQL Server mgmt studio中的窗格?,sql-server-2005,tsql,stored-procedures,ssms,Sql Server 2005,Tsql,Stored Procedures,Ssms,我可以在存储过程中使用PRINT语句来调试代码。我在SQLServerManagementStudio的Messages选项卡中看到了输出。如何将一个或多个完整的SELECT语句输出转储到该消息选项卡 我的存储过程返回多个输出变量,因此这里不允许返回单个数据集。我正在努力寻找一种调试复杂过程的好方法。它必须在消息窗格中吗?我总是觉得运行select查询很方便,它将结果输出到结果窗格中,实际输出在另一个结果集中。有时我会包括一个“标识符”列,帮助识别结果。例如: select 'checkpoin

我可以在存储过程中使用PRINT语句来调试代码。我在SQLServerManagementStudio的Messages选项卡中看到了输出。如何将一个或多个完整的SELECT语句输出转储到该消息选项卡


我的存储过程返回多个输出变量,因此这里不允许返回单个数据集。我正在努力寻找一种调试复杂过程的好方法。

它必须在消息窗格中吗?我总是觉得运行select查询很方便,它将结果输出到结果窗格中,实际输出在另一个结果集中。有时我会包括一个“标识符”列,帮助识别结果。例如:

select 'checkpoint1',a,b,c from table1
....
select 'table @a', *  from @a
....
<actual query here>
从表1中选择“检查点1”、a、b、c
....
选择“表@a”,从@a中选择*
....
当存储的过程准备就绪时,只需删除这些脚手架语句即可

设置“结果到文本”选项,结果和消息选项卡将合并为一个选项卡,将打印和选择语句组合在一起

要将结果设置为文本,请执行以下任一操作:

  • 控制-T
  • 查询菜单\Results To \Results To Text

将查询的全部内容打印到“消息”窗口可能会带来更多麻烦。相反,我建议从查询窗口调试该过程。您可以做的是向过程中添加一个可选参数,默认值为NULL。你的应用程序不会通过它,所以你可以利用它为你的优势。例:

Alter Procedure Foo(@Col1 int, @col2 varchar(20), @Debug Bit = NULL)
As
SET NOCOUNT ON

If @Debug = 1
  Begin
    Select * From SomeTable Where Col1 = @Col1
  End

-- The rest of your code here

然后,当您从查询窗口调用此过程时,只需将@Debug参数的值1传递给该过程即可。您可以从有问题的存储过程中填充临时表或表变量,然后在调用存储过程后从这些表中进行选择。确保删除并重新创建sp中的所有临时表

CREATE TABLE ##t1 (x int)
GO

CREATE PROCEDURE Foo AS
BEGIN
  TRUNCATE TABLE ##t1
  INSERT INTO ##t1 SELECT column FROM table;
END
GO

exec Foo;
select x from ##t1;