如何使用变量值作为表名创建永久表

时间:2016-09-07 09:12:59

标签: sql-server

我正在编写一个脚本,它将为我填充SQL Server中的测试数据。我有5个存储过程。第一个存储过程生成ITEM,其他存储过程使用这些新创建的ITEM创建销售订单。

我不想解释所有细节不打扰你,所以我想问你是如何使用变量的值作为表名创建一个名称永久的表。但我不想创建TABLE VARIABLE或TEMP TABLE,因为我无法从其他存储过程中调用它们。

这是我想要做的......

DECLARE @TABLENAME NVARCHAR(50)
SET @TABLENAME = 'TABLE_ITEM_1'

CREATE TABLE @TABLENAME
(
    ID INT,
    NAME NVARCHAR(50)
)

然后我将创建TABLE_ITEM_2,TABLE_ITEM_3等等......

有没有办法像我解释的那样创建一个表?

2 个答案:

答案 0 :(得分:2)

  

使用动态查询。它是最好的选择

DECLARE @TABLENAME NVARCHAR(50)
DECLARE @QryStr VARCHAR(MAX)
SET @TABLENAME = 'TABLE_ITEM_1'

SET @QryStr = '
CREATE TABLE '+@TABLENAME+'
(
ID INT,
NAME NVARCHAR(50)
)'

EXEC(@QryStr)

答案 1 :(得分:2)

你必须使用动态sql。

DECLARE @TABLENAME NVARCHAR(50)
SET @TABLENAME = 'TABLE_ITEM_1'

DECLARE @SQL NVARCHAR(1000)
SET @SQL = 'CREATE TABLE ' + QUOTENAME(@TABLENAME) + '
(
ID INT,
NAME NVARCHAR(50)
)'
EXECUTE sp_executesql @SQL