Забыл еще рекурсивную процедуру 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
--~--~---------~--~----~------------~-------~--~----~ -~----------~----~----~----~------~----~------~--~---