sql 递归获取区域全名
时间: 2023-09-03 22:09:02 浏览: 56
要使用SQL递归获取区域全名,可以使用以下代码:
```sql
ALTER function \[dbo\].\[getOrgAllName\](@OrgID int) returns nvarchar(500) as
begin
declare @oname nvarchar(50)
declare @fid int
declare @rtnValue nvarchar(500)
select @oname=orgname,@fid=parentid from sys_org where orgid=@OrgID
if (@fid=0)
set @rtnValue=@oname
else
begin
select @rtnValue=dbo.getOrgAllName(@fid)
set @rtnValue=@rtnValue+'\'+@oname
end
return @rtnValue
end
```
这个函数使用了递归查询,通过传入的部门ID,逐级获取上级部门的名称,并将它们拼接成完整的区域全名。函数首先从`sys_org`表中查询指定部门ID的名称和上级部门ID,如果上级部门ID为0,则说明已经到达根部门,直接返回部门名称。否则,递归调用自身,传入上级部门ID,获取上级部门的全名,并将当前部门名称拼接在后面,最终返回完整的区域全名。
请注意,这个函数是根据引用\[1\]中的代码编写的,所以需要确保`sys_org`表中的字段和数据结构与引用\[2\]中的代码一致。同时,函数的返回值类型为`nvarchar(500)`,可以根据实际情况进行调整。
使用这个函数时,只需要传入部门ID作为参数,即可获取该部门的区域全名。例如,使用以下查询语句获取部门ID为72的区域全名:
```sql
SELECT dbo.getOrgAllName(72) AS AreaFullName
FROM sys_org
WHERE orgid = 72;
```
这样就可以得到部门ID为72的区域全名。
#### 引用[.reference_title]
- *1* [存储过程递归获取获取多级部门全名](https://blog.csdn.net/shuaizhan168/article/details/95077280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* *3* [达梦数据库中递归的使用](https://blog.csdn.net/xionglh/article/details/109825145)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]