我正在编写一个脚本,它将为我填充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等等......
有没有办法像我解释的那样创建一个表?
答案 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