2016-09-07 21 views
1

我正在編寫一個腳本來爲我填充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

使用動態查詢。它是最好的選擇

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

SET @QryStr = ' 
CREATE TABLE '[email protected]+' 
(
ID INT, 
NAME NVARCHAR(50) 
)' 

EXEC(@QryStr) 
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 
+0

我猜沒有其他辦法。那麼,我應該再次使用動態查詢來執行SELECT語句? –

+0

不,因爲您無法通過變量指定表名,所以它已連接成動態SQL語句,然後執行 – AdaTheDev

相關問題