2013-02-08 22 views
2

我想在SQL Server 2008中
一個SELECT查詢作爲參數傳遞給STORED PROCEDURE在該SP執行該查詢和存儲到臨時表,然後我要循環光標在該臨時表的2個字段上。通選擇命令參數,並在臨時表執行

那麼我該怎麼做?

主要是這一部分:execute that query and store to temp table

編輯:

查詢:

SELECT * FROM SomeView WHERE COL1 = '1' AND COL = GETDATE() ORDER BY COL0 

有在SomeView許多領域,但我只想要2:COLS1,CLOS2 我要循環CURSOR僅在這兩個字段上

+1

請閱讀[動態SQL的詛咒和祝福](http://www.sommarskog.se/dynamic_sql.html),它將回答所有關於動態SQL的問題。我想你需要一個全局臨時表('##') –

+0

好的...........你的查詢和存儲過程在哪裏? – andy

回答

1

以下是如何將查詢結果從動態SQL查詢存儲到臨時表:

DECLARE @sql NVARCHAR(1000) 
SET @sql = 'SELECT COL1, COL2 FROM SomeView WHERE COL1 = ''1'' AND COL = GETDATE() ORDER BY COL0' 

CREATE TABLE #temp(col1 <yourDataType>, col2 <yourDataType>) 
INSERT INTO #temp EXEC sp_executesql @sql 

但你真的應該考慮替代光標,光標會降低性能,通過遊標操作排排而查詢做基於集合的操作。 SQL Server針對基於集合的數據訪問進行了優化。如果你可以寫一個查詢請不要使用遊標。

+0

非常感謝...但我必須首先檢查每一行並更新那行... COL1&COL2只是ID ...建議感謝.. – Sachin

+0

好吧,我很樂意幫助:) –

+0

好新聞:我已經刪除光標的臨時表的幫助...謝謝 – Sachin