2013-01-16 25 views
1

如何根據列數創建臨時表?如何根據列號創建臨時表?

例如,如果count爲20,則創建一個包含20列的臨時表(全部爲nvarchar類型)。

如果count爲10,則只創建10列的臨時表。

+1

算什麼?列數在哪裏?你有沒有考慮過使用'SELECT * INTO',以便你的'CREATE TABLE'不必是動態的? –

回答

3

如果真的真的希望這樣做,因爲寫的,你可以使用動態SQL象下面這樣:

DECLARE @ColCount int = 20 
DECLARE @Ct int = 1 
DECLARE @SQL nvarchar(max) = '' 

SET @SQL = 'CREATE TABLE #VarTemp(' 

WHILE @Ct < @ColCount+1 
BEGIN 
    SET @SQL += 'Col' + CAST(@Ct as nvarchar(8)) + ' nvarchar(256),' 
    SET @Ct = @Ct + 1 
END 
SET @SQL = LEFT(@SQL, (LEN(@SQL) - 1)) 
SET @SQL += ')' 

SELECT @SQL 

只要把輸出的SQL字符串到另一個窗口,或者如果你相信它,你可以改變SELECT改爲EXEC

+0

謝謝JNK ..這是我正在尋找.. – James123

+0

嘗試與'EXEC @sql'得到錯誤'的名稱'CREATE TABLE #VarTemp(Col1 nvarchar(256),Col2 nvarchar(256),''是不是有效的標識符 ' – James123

+0

@ James123用括號括起來:'EXEC(@SQL)',它試圖找到一個名爲CREATE TABLE ....的存儲過程,否則 – JNK