我有一個臨時表(或者說,返回一個值表的函數)。爲表中的每個記錄執行語句
我想爲表中的每條記錄執行一些語句。 這可以不使用遊標完成?
我不反對遊標,但會想要更優雅的語法\的方式。
像這樣隨意編造的語法:
for (select A,B from @temp) exec DoSomething A,B
我使用的是SQL Server 2005中
我有一個臨時表(或者說,返回一個值表的函數)。爲表中的每個記錄執行語句
我想爲表中的每條記錄執行一些語句。 這可以不使用遊標完成?
我不反對遊標,但會想要更優雅的語法\的方式。
像這樣隨意編造的語法:
for (select A,B from @temp) exec DoSomething A,B
我使用的是SQL Server 2005中
我不認爲你想要的東西向是那麼容易。
我發現的是,您可以創建一個採用參數A和B,然後從函數內部執行擴展存儲過程的標量函數。這可能會實現你想要做的事情,但似乎這可能會使代碼更加複雜。
我認爲爲了可讀性和可維護性,您應該堅持CURSOR實現。
是的,我認爲你是對的。我環顧四周,光標幾乎是做這件事的標準方式。 – 2009-11-04 12:22:37
我會研究更改存儲的proc,以便它可以針對一組數據而不是單個行輸入。
如果您需要RBAR處理,CROSS/OUTER APPLY
會做什麼。
這是優雅的,但取決於你需要做什麼處理
更具體。現在你的問題是無法回答的 – 2009-11-04 05:10:01
我有一個存儲過程:DoSomething以varchar(255)作爲參數。我想'從foomaster中選擇[名稱],其中id <100',並對返回的每個[name]執行DoSomething。但它看起來像遊標是最簡單的方法。 – 2009-11-04 12:24:09