CREATE PROCEDURE fandxiaji
(@上级ID nvarchar(10))
AS
begin
SET Nocount On
DECLARE @下级ID nvarchar(10),
@下级姓名 nvarchar(10)DECLARE cChild CURSOR LOCAL FAST_FORWARD
FOR
SELECT 工号,
姓名 FROM 人事表
WHERE 人事表.上级ID=@上级ID
ORDER BY 工号
OPEN cChild
FETCH cChild INTO @下级ID, @下级姓名
WHILE @@Fetch_Status = 0 --游标开始
BEGIN
PRINT(SPACE(@@NestLevel * 2) + '+ '+ @下级ID + ' ' + @下级姓名)
EXEC fandxiaji @下级ID
FETCH cChild INTO @下级ID, @下级姓名
END --游标结束
CLOSE cChild
DEALLOCATE cChild
end
go EXEC fandxiaji '1006' + 1000 小张
+ 1010 小张1
+ 1002 小红
+ 1004 李好
+ 1003 小明
+ 1001 小李
+ 1008 小平
+ 1009 大李
+ 1005 黄永
打印的时候是一层一层的打,这里打印下级的时候是怎么找到相应的上级,然后插入的。 我想的流程结果是。 +xxxxxx
+xxxxxxxx
+xxxxxxxxx
+xxxxxxx
+xxxxxxx
+xxxx
+xxxxxx
(@上级ID nvarchar(10))
AS
begin
SET Nocount On
DECLARE @下级ID nvarchar(10),
@下级姓名 nvarchar(10)DECLARE cChild CURSOR LOCAL FAST_FORWARD
FOR
SELECT 工号,
姓名 FROM 人事表
WHERE 人事表.上级ID=@上级ID
ORDER BY 工号
OPEN cChild
FETCH cChild INTO @下级ID, @下级姓名
WHILE @@Fetch_Status = 0 --游标开始
BEGIN
PRINT(SPACE(@@NestLevel * 2) + '+ '+ @下级ID + ' ' + @下级姓名)
EXEC fandxiaji @下级ID
FETCH cChild INTO @下级ID, @下级姓名
END --游标结束
CLOSE cChild
DEALLOCATE cChild
end
go EXEC fandxiaji '1006' + 1000 小张
+ 1010 小张1
+ 1002 小红
+ 1004 李好
+ 1003 小明
+ 1001 小李
+ 1008 小平
+ 1009 大李
+ 1005 黄永
打印的时候是一层一层的打,这里打印下级的时候是怎么找到相应的上级,然后插入的。 我想的流程结果是。 +xxxxxx
+xxxxxxxx
+xxxxxxxxx
+xxxxxxx
+xxxxxxx
+xxxx
+xxxxxx
CREATE PROCEDURE fandxiaji
(@上级ID nvarchar(10))
AS
begin
SET Nocount On
DECLARE @下级ID nvarchar(10),
@下级姓名 nvarchar(10)DECLARE cChild CURSOR LOCAL FAST_FORWARD
FOR
SELECT 工号,
姓名 FROM 人事表
WHERE 人事表.上级ID=@上级ID
ORDER BY 工号
OPEN cChild
FETCH cChild INTO @下级ID, @下级姓名
WHILE @@Fetch_Status = 0 --游标开始
BEGIN
PRINT( '+ '+ @下级ID + ' ' + @下级姓名)
EXEC fandxiaji @下级ID
FETCH cChild INTO @下级ID, @下级姓名
END --游标结束
CLOSE cChild
DEALLOCATE cChild
end
go