在Sql中使用现有表模式声明表变量

Din*_*ena 5 sql sql-server sql-server-2008

我想使用现有表架构在我的存储过程中声明一个表变量。

我有一个表,比如说TableA,它有大约 30 列。我想使用与声明临时表相同的列来声明表变量。

例如,我可以使用这样的模式声明一个临时表:

SELECT TOP 0 * INTO #Temp_TableA FROM TableA
Run Code Online (Sandbox Code Playgroud)

我可以类似地声明一个表变量吗???

Rom*_*syk 1

来自MSDN
不,表变量是一个变量,顾名思义,因此您需要先声明它,然后才能像所有其他 T-SQL 变量一样使用它,并且需要使用INSERT INTO

DECLARE @MyTable TABLE(
ID INT NOT NULL,
Data varchar(30) NOT NULL
);
INSERT INTO @MyTable
SELECT ID, data
From <table>
Run Code Online (Sandbox Code Playgroud)

您还可以在存储过程中使用临时表。只需将以下代码添加到存储过程的开头:

if object_id('tempdb..#TableA') is not null drop table #TableA
Run Code Online (Sandbox Code Playgroud)