调试时获取临时表数据

Posted

技术标签:

【中文标题】调试时获取临时表数据【英文标题】:Getting data of temp table while debugging 【发布时间】:2017-09-15 05:50:34 【问题描述】:

在调试时,我无法在 sql server 2012 中查看临时表的值。我正在获取所有变量值,甚至可以打印该值,但在处理临时表时遇到了困难。有什么方法可以查看临时表的值吗?。

【问题讨论】:

调试什么?您的问题绝对不是 SQL Server, 我已经创建了一个包含大量变量、临时表和事务的存储过程。我已经打印了我的变量作为检查点,当我执行我的程序时,我在 msg 窗口中得到了打印的值,但无法看看我的临时表包含什么值。 【参考方案1】:

SQL Server 提供了临时表的概念,极大地帮助了开发人员。这些表可以在运行时创建,可以做一张普通表可以做的各种操作。但是,根据表类型,范围是有限的。这些表是在 tempdb 数据库中创建的。

在调试的时候,你可以暂停SP,在你的SP中写select语句在DROP表语句之前,#表就可以查询了。

从#temp中选择*

【讨论】:

【参考方案2】:

我将这段代码放在我的存储过程中,我可以在“Locals”窗口中看到临时表的内容。

INSERT INTO #temptable (columns) SELECT columns FROM sometable; -- populate your temp table
-- for debugging, comment in production
DECLARE @temptable XML = (SELECT * FROM #temptable FOR XML AUTO); -- now view @temptable in Locals window

这适用于较旧的 SQL Server 2008,但较新的版本可能会支持更友好的 FOR JSON 对象。信用:https://***.com/a/6748570/1129926

【讨论】:

以上是关于调试时获取临时表数据的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 2008 Management Studio 中调试时查询存储过程中的临时表

MySql存储过程的调试

SSIS 包不想获取临时表的元数据

Mysql临时表用法

Mysql 临时表+视图

mysql-补充