Interbase树形结构和递归调用问题,高手请进!!急!!!!
现有个表包含ID,HeadID两个字段(其他忽略),第一层ID的HeadID is NULL,其他就是
类似部门的树形结构,现在的问题是用户选择一个ID后,我要取出以次ID 为HeadID的所有
子ID的最后一层的所有的ID,我写了个递归过程如下,但有问题,望高手指教!!急!
set term^;
create procedure GetAllID(ID integer)
RETURNS (ChildID integer)
as
declare variable SubID Integer;
begin
for Select ID from Test where HeadID = :ID
into :SubID do
begin
if (SubID is null) then /*没有以此ID作为HeadID的记录,即为最后一层,返回*/
begin
ChildID = PID;
suspend;
end
if (SubID > 0) then /*不是则调用递归*/
begin
for select ChildID from GetAllID(:SubID) into :SubID do
begin
Suspend;
end
end
end
end^