CREATE FUNCTION [dbo].[GET_DEPT_LIST](@p_dept_id VARCHAR(40))
RETURNS @deptList TABLE
(
dept_id varchar(20),
dept_name varchar(100),
dept_level int
)
AS
BEGIN
DECLARE @deptId VARCHAR(20)
DECLARE @deptName VARCHAR(100)
DECLARE @deptLevel int
DECLARE C_LIST CURSOR
FOR
with dept_list(dept_id, dept_name, dept_level) as (
select dept_id, dept_name, 0 as dept_level
from department
where dept_id=@p_dept_id
union all
select a.dept_id, a.dept_name, b.dept_level+1
from department as a
join
dept_list b
on a.parent_dept_id=b.dept_id
)
select dept_id, dept_name, dept_level from dept_list
OPEN C_LIST -- cursor open
FETCH NEXT FROM C_LIST INTO @deptId, @deptName, @deptLevel
WHILE @@FETCH_STATUS = 0
BEGIN
insert @deptList values(@deptId, @deptName, @deptLevel)
FETCH NEXT FROM C_LIST INTO @deptId, @deptName, @deptLevel
END
CLOSE C_LIST
DEALLOCATE C_LIST
return
END
'Db > Mssql' 카테고리의 다른 글
mssql과 oracle 함수 비교 (1) | 2011.10.28 |
---|---|
mssql function sample (1) | 2011.10.28 |
mssql procedure while, if sample (3) | 2011.10.28 |
MSSQL Getdate 날짜포멧 (2) | 2011.10.18 |
mssql 세로 데이터를 가로로 표현, split 기능 함수 (2) | 2011.10.18 |