在SQL Server 2008 R2中创建表变量

Pan*_*kaj 30 table-variable sql-server-2008

什么是表变量?以及如何使用与现有存储过程结果集匹配的列创建表变量(虚拟内存表).

我执行了这个程序,在执行之后,我知道列名.但是,我是否必须声明与存储过程中相同的列数据类型?

编辑:我试过这个

DECLARE @Table TABLE( 
name varchar(30) NOT NULL, 
location varchar(30) NOT NULL 
); 

INSERT @Table 
SELECT name, location FROM 
Exec SPROC @param , @param
Run Code Online (Sandbox Code Playgroud)

小智 30

@tableName 表变量在脚本运行的持续时间内是活动的,即它们仅是会话级对象.

要测试它,在sql server management studio下打开两个查询编辑器窗口,并创建具有相同名称但结构不同的表变量.你会明白的.@tableName因此,该对象是临时的,用于我们的内部数据处理,它对实际的数据库结构没有贡献.

还有另一种类型的表对象可以创建用于临时使用.它们是#tableName声明为物理表的类似create语句的对象:

Create table #test (Id int, Name varchar(50))
Run Code Online (Sandbox Code Playgroud)

此表对象已创建并存储在临时数据库中.与第一个不同,此对象更有用,可以存储大量数据并参与事务等.这些表在连接打开之前一直存在.在重新创建之前,您必须通过以下脚本删除创建的对象.

IF OBJECT_ID('tempdb..#test') IS NOT NULL
  DROP TABLE #test 
Run Code Online (Sandbox Code Playgroud)

希望这是有道理的!