2013-02-11 56 views
0

我一直在玩動態SQL來嘗試完成這一點,它有點可能,但不是最順利的方式去做。創建一個隨機名稱(數字)臨時表

所以我想知道是否有一種方法來創建一個隨機名臨時表(## show101,## show24,## show576)。

我想實現的是一個臨時表,它是由不同的表中的某些數據創建的。然後我只是操縱臨時表中的數據並輸出結果。

我使用SQL Server 2008的

+0

用一個唯一的ID列來包含你的隨機數是不是更容易?然後您可以從表格中選擇具有適當ID的記錄。 – LittleBobbyTables 2013-02-11 16:42:28

+1

臨時表的範圍在一個動態SQL執行語句中。你爲什麼需要版本? – 2013-02-11 16:43:30

+0

@LittleBobbyTables - 不能輸入到表中的數據根據​​客戶選擇的不同而不同,所以列不同 – JohnZ 2013-02-11 16:45:09

回答

1

你的例子是使用全球臨時表。這些內容會一直保留,直到它們被刪除,並且它們可以在不同的連接之間共享。這就是爲什麼他們是「全球」的原因。就你而言,它們可以在執行動態語句和外部語句之間共享。

我建議的代碼看起來更像是這樣的:

create table #MyTempTable . . . <as whatever> 

declare @sql nvarchar(max) = ' 
    select <whatver> 
    into #temp1 

    . . . 

    do some more work on #temp1 if you like 

    --Finally 
    select * from temp1 
    '; 

insert into #MyTempTable 
    exec(@sql); 

這將「移動」從動態範圍有關外劃定範圍,在那裏你可以將它用於其他目的的數據。您現在可以在#MyTempTable中訪問它。

+0

好的,這看起來很簡單,沒有問題,但是我怎麼能在#MyTempTable結尾生成一個隨機數或者根本不需要?如果兩個或多個客戶端正在運行查詢會怎麼樣?他們只能使用他們創建的#MyTempTable正確嗎? – JohnZ 2013-02-11 16:56:33

+0

@JohnZ。 。 。隨機數根本不需要。您可以使用本地臨時表。 – 2013-02-11 16:57:04

+0

感謝您的幫助和信息。非常感激 – JohnZ 2013-02-11 17:06:38