2009-11-04 43 views
1

我有一個臨時表(或者說,返回一個值表的函數)。爲表中的每個記錄執行語句

我想爲表中的每條記錄執行一些語句。 這可以不使用遊標完成?

我不反對遊標,但會想要更優雅的語法\的方式。

像這樣隨意編造的語法:

for (select A,B from @temp) exec DoSomething A,B 

我使用的是SQL Server 2005中

+0

更具體。現在你的問題是無法回答的 – 2009-11-04 05:10:01

+0

我有一個存儲過程:DoSomething以varchar(255)作爲參數。我想'從foomaster中選擇[名稱],其中id <100',並對返回的每個[name]執行DoSomething。但它看起來像遊標是最簡單的方法。 – 2009-11-04 12:24:09

回答

1

我不認爲你想要的東西向是那麼容易。

我發現的是,您可以創建一個採用參數A和B,然後從函數內部執行擴展存儲過程的標量函數。這可能會實現你想要做的事情,但似乎這可能會使代碼更加複雜。

我認爲爲了可讀性和可維護性,您應該堅持CURSOR實現。

+0

是的,我認爲你是對的。我環顧四周,光標幾乎是做這件事的標準方式。 – 2009-11-04 12:22:37

0

我會研究更改存儲的proc,以便它可以針對一組數據而不是單個行輸入。

0

如果您需要RBAR處理,CROSS/OUTER APPLY會做什麼。

這是優雅的,但取決於你需要做什麼處理