長話短說...在SQL Server 2008中使用動態sql構建臨時表
我正在構建一個Web應用程序,用戶可以在其中選擇約40個參數的任意組合。然而,對於他們想要的結果之一(投資經驗),我必須從不同的表格中提取信息,並比較六個不同列中的值(股票期權,共同基金期權等),並僅返回六個最高值爲特定的記錄。
這不是問題。問題是,在運行時,我的查詢找到投資exp不一定知道帳戶ID。考慮到表掃描會帶來超過50萬的客戶,這不是一種選擇。所以我想要做的是編輯我的主動態構建查詢的副本,但不是返回30列,而是返回2,accountid和experienceid(這是體驗表的PK),所以我可以做過濾處理。
你們中的一些人可能會定義與我自己有點不同的動態SQL。我的查詢是一個字符串,根據發送給我的過程的參數,where子句的一部分將由開關打開或關閉。最後我執行,這一切都在服務器端完成,所有的Web應用程序都會向我的proc發送一個參數數組。
我在簡化代碼看起來基本上是這樣的:
declare @sql varchar(8000)
set @sql =
'select [columns]
into #tempTable
from [table]
[table joins]' + @dynamicallyBuiltWhereClause
exec(@sql)
這一部分,我嘗試使用#tempTable的投資經驗,濾波處理後
,但我得到一個錯誤,告訴我#tempTable不存在。
任何和所有的幫助將不勝感激。
以及我的程序將收到40多個默認爲null的參數,並且一系列值檢查將作爲切換來構建where子句。謝謝你,我完全忘記了範圍(我是新的)和2個散列符號。謝謝。 – IWriteApps 2010-10-15 16:41:00