Забыл еще рекурсивную процедуру
CREATE PROCEDURE GET_TREE_LINE (
     INSET_ID INTEGER,
     INMEM_PID INTEGER,
     INLEVEL INTEGER)
RETURNS (
     MEM_PID INTEGER,
     MEM_ID INTEGER,
     OUTLEVEL INTEGER,
     IS_LEAF INTEGER,
     MEM_ORDER INTEGER)
AS
DECLARE VARIABLE CHILDID INTEGER;
begin
  for select a.MEM_ID, a.mem_order from LINE_TREE a
   where a.MEM_PID = :InMEM_PID and a.set_id=:inset_id
   into :ChildID, :MEM_ORDER
  do
  begin
   MEM_PID = :InMEM_PID;
   MEM_ID = :ChildID;
   OutLevel = :InLevel + 1;
   if (exists(select 1 from LINE_tree a where
   a.set_id=:inset_id and a.mem_pid=:mem_id))then
   IS_LEAF=0;
    else
    IS_LEAF=1;
   Suspend;
   for select MEM_ID, OUTLEVEL, MEM_PID,IS_LEAF, MEM_ORDER from 
GET_TREE_LINE
        (:inset_id,:MEM_ID,  :OutLevel)
     into :MEM_ID, :OutLevel, :MEM_PID,:is_leaf, :MEM_ORDER
    do
      Suspend;
  end
end


--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---

  • Re: � Андрій Жук
    • Re: � Андрій Жук
      • Re: � Андрій Жук

Ответить