查看从存储过程创建的临时表
时间:2020-03-06 14:38:56 来源:igfitidea点击:
我在SQL 2005中有一个存储过程。该存储过程实际上是在SP的开头创建临时表,并在结尾将其删除。我现在在VS 2005中调试SP。在SP之间,我想知道临时表中的内容。任何人都可以在运行时帮助查看临时表的内容吗?
谢谢
维诺德·T
解决方案
编辑存储过程,以便在运行时从临时表中临时选择*(可能在另一个表或者文件中,或者仅在输出窗格中)。
然后,我们可以将其改回。如果我们不喜欢原始过程,则将其复制并编辑副本。
临时表有几种,我认为我们可以使用SP使用它后不会删除的表。只要确保我们不会两次调用相同的SP,否则在尝试创建现有表时会出错。或者只是在看到临时表后放下临时表。因此,不要使用表变量(@table),而要使用#table或者## table
从http://arplis.com/temporary-tables-in-microsoft-sql-server/:
本地临时表
- 本地临时表的前缀以单数字符号(#)作为其名称的第一个字符,例如(#table_name)。
- 本地临时表仅在当前会话中可见,或者我们可以说它们仅对用户的当前连接可见。当用户与Microsoft SQL Server实例断开连接时,它们将被删除。
全局临时表
- 全局临时表的前缀以双数字符号(##)作为其名称的第一个字符,例如(## table_name)。
- 全局临时表对所有会话可见,或者可以说它们在创建后对所有用户可见。
- 当所有引用该表的用户都与Microsoft SQL Server断开连接时,它们将被删除。
这对我有帮助。
SELECT * FROM #Name USE [TEMPDB] GO SELECT * FROM syscolumns WHERE id = ( SELECT id FROM sysobjects WHERE [Name] LIKE '#Name%')
这给出了所有临时表的详细信息
要扩展先前建议的将数据放入永久表的建议,可以尝试以下操作:
-- Get rid of the table if it already exists if object_id('TempData') is not null drop table TempData select * into TempData from #TempTable