我需要在SQL Server 2008中創建一個存儲過程,它將根據某個值更新一個表。這裏的技巧是我需要遞歸搜索表,直到找到我正在查找的值,然後更新當前記錄。例如,我有一個包含3列的僱員表:Sql Server 2008遞歸存儲過程
僱員
經理ID
FAMILYID
對於表中的每一個僱員,我想它的經理ID。然後,如果ManagerID!= 0,則獲取當前ManagerId的ManagerId(每個ManagerId將指向一個EmployeeId) - 繼續執行此操作,直到我到達頂級管理器(其中ManagerId == 0)。
一旦我找到最高級別的管理器,我想更新原始記錄中啓動該進程的FamilyId列,並使用上述進程的最後一個EmployeeId的值。
基本上我需要對錶中的每條記錄進行此操作。我嘗試將FamilyId設置爲層次結構中所有員工和管理員的根管理器的值。
我不確定是否應該使用遊標或CTE來完成此操作 - 或者只是在代碼中執行此操作。
任何幫助,非常感謝。
謝謝!
你應該張貼在stackexchange這個問題[DBA專家現場](http://dba.stackexchange.com/) – CoderHawk 2011-03-12 04:46:17
@Sandy - 這是編程的問題不是關於數據庫的管理問題。 – 2011-03-12 12:50:16
從你的描述中可以看出,'FamilyId'對任意'根'員工的所有'下屬'來說都是一樣的嗎?如果是這樣,爲什麼總是去樹頂? – 2011-03-12 13:03:08