【发布时间】:2011-03-12 04:35:20
【问题描述】:
我需要在 SQL Server 2008 中创建一个存储过程,它将根据某个值更新表。这里的诀窍是我需要递归搜索表,直到找到我要查找的值,然后更新当前记录。例如,我有一个包含 3 列的员工表:
员工编号
经理ID
家庭身份证
对于表中的每个 EmployeeId,我想获取它的 ManagerId。然后,如果 ManagerID != 0,则获取当前 ManagerId 的 ManagerId(每个 ManagerId 将指向一个 EmployeeId)——继续此操作,直到我到达顶级经理(其中 ManagerId == 0)。
一旦找到顶级经理,我想用上述流程的最后一个 EmployeeId 的值更新启动流程的原始记录中的 FamilyId 列。
基本上我需要对表中的每条记录执行此操作。我正在尝试将 FamilyId 设置为层次结构中所有员工和经理的根经理的值。
我不确定是否应该使用光标或 CTE 来完成这项工作——或者只是在代码中完成。
非常感谢任何帮助。
谢谢!
【问题讨论】:
-
你应该把这个问题发到 stackexchange dba experts site
-
@Sandy - 这是编程问题,而不是关于数据库管理的问题。
-
从您的描述中看,
FamilyId对于任意“根”员工的所有“下属”不是都相同吗?如果是这样,为什么总是爬到树的顶端?
标签: tsql sql-server-2008 stored-procedures recursion