什么是表变量?以及如何使用与现有存储过程结果集匹配的列创建表变量(虚拟内存表)。
我执行了该过程,执行后,我知道列名。但是我是否必须声明与存储过程中相同的列数据类型?
编辑:我试过这个
DECLARE @Table TABLE(
name varchar(30) NOT NULL,
location varchar(30) NOT NULL
);
INSERT @Table
SELECT name, location FROM
Exec SPROC @param , @param
什么是表变量?以及如何使用与现有存储过程结果集匹配的列创建表变量(虚拟内存表)。
我执行了该过程,执行后,我知道列名。但是我是否必须声明与存储过程中相同的列数据类型?
编辑:我试过这个
DECLARE @Table TABLE(
name varchar(30) NOT NULL,
location varchar(30) NOT NULL
);
INSERT @Table
SELECT name, location FROM
Exec SPROC @param , @param
@tableName表变量仅在脚本运行期间有效,即它们只是会话级对象。
为了测试这一点,在 sql server management studio 下打开两个查询编辑器窗口,并创建名称相同但结构不同的表变量。你会有一个想法。因此,该@tableName对象是临时的,用于我们内部的数据处理,它对实际的数据库结构没有贡献。
可以创建另一种类型的表对象以供临时使用。它们是#tableName像物理表的类似创建语句一样声明的对象:
Create table #test (Id int, Name varchar(50))
该表对象被创建并存储在临时数据库中。与第一个不同,这个对象更有用,可以存储大数据并参与事务等。这些表在连接打开之前都是活动的。在重新创建之前,您必须通过以下脚本删除创建的对象。
IF OBJECT_ID('tempdb..#test') IS NOT NULL
DROP TABLE #test
希望这是有道理的!