2012-09-26 21 views
0

而不是使用遊標遍歷表,我想用表列數據填充ARRAY,然後遍歷T-SQL數組進行我的計算或其他任何操作,就像「而不是文件結尾做某事」。我覺得這樣可以最大限度地減少磁盤使用,並且效率更高。表列作爲T-SQL中的數組

+0

T-SQL沒有數組數據類型... –

+3

構建一個查詢告訴SQL Server *你想要什麼*,而不是*如何做*,通常會更好。只有在不能很好地執行時,纔會考慮做任何奇怪的事情,例如循環。 SQL是基於集合的語言 - 嘗試將您的查詢編寫爲基於集合的操作。 –

回答

0

如果你的光標有問題,你正確地做錯了事情,經常使用光標。 只有sql表中沒有數組。如果正確完成,在桌上操作非常快速。因此,你可以使用臨時表,表變量(或者作爲最後手段的遊標),或者只是選擇/更新,否則將數據導入其他工具並從那裏開始工作。

+1

「在sql中沒有數組」是不正確的。 SQL:1999有一個數組類型。 –

+0

@MartinSmith你不應該知道這些事情,就像知道一年有多少秒鐘:)。但謝謝你糾正我。 –

1

我相信你說的是Recursive CTE,其中"while not end-of-file do something"可以通過停止條件來處理。

儘管SQL-Server直接不支持像Oracle中的VARRAY那樣的數組概念,但是,here是一篇有趣的文章,它描述了我們如何使用TVP模擬相同的行爲。