سلام دوست عزیز
من این کد رو بروش بازگشتی نوشتم ولی تکمیل نیست(آخه الان ساعت 3 نصف شبه و من مخم بزور کار میکنه)
در این کد
1- تست اینکه شخصی رپیس خودش هم باشه صورت نگرفته .(این کار بعهده خودت)
2- اگه تعداد تورفتگی درخت از 32 سطح بیشتر بشه خطا میده
روش کار کن .. البته برای رفع این مشکلات هم راه حلهای زیادی هست.
برای فراخوانی EXEC process 2
insert into employees(BOSS,LNAME) values(1,'akbari')
insert into employees(BOSS,LNAME) values( 1,'sajaddi')
insert into employees(BOSS,LNAME) values( 2,'mehrdadi')
insert into employees(BOSS,LNAME) values( 2,'karimi')
insert into employees(BOSS,LNAME) values( 2,'farshidi')
insert into employees(BOSS,LNAME) values( 3,'fatemi')
insert into employees(BOSS,LNAME) values( 6,'masoudi')
insert into employees(BOSS,LNAME) values( 6,'ahmadi')
insert into employees(BOSS,LNAME) values( 8,'ferdosi')
insert into employees(BOSS,LNAME) values( 8,'naderi')
-----------------------------------------------------------------------------
Create proc process(@boss int) as
begin
declare @i int ,@bs int, @Row int ,@lname char(10)
declare @Temp Table(empID int,LName char(10), ID_Num int identity)
Insert @Temp
SELECT empID,LName FROM EMPLOYEES where boss =@boss
set @Row= @@rowcount
if @@ROWCOUNT = 0 Return
Set @i =1
while @i <= @ROW
begin
select @bs=empID,@lname = LName From @Temp where ID_NUM = @i
print @LName
EXEC process @bs
Set @i=@i+1
end
end
-----------------------------------------------------------