| Код | CREATE PROCEDURE GET_TREE ( PARENTID INTEGER) RETURNS ( TREE_ID INTEGER, PARENT_ID INTEGER NAME VARCHAR(50)) AS BEGIN FOR SELECT T.TREE_ID, T.PARENT_ID, T.NAME FROM TABLE_TREE T WHERE ((T.PARENT_ID IS NULL) AND (:PARENTID IS NULL)) OR (T.PARENT_ID = :PARENTID) ORDER BY T.NAME INTO :TREE_ID, :PARENT_ID, :NAME DO BEGIN SUSPEND; /* Рекурсия для каждого листочка */ FOR SELECT R.TREE_ID, R.PARENT_ID, R.NAME FROM GET_TREE( :TREE_ID ) R INTO :TREE_ID, :PARENT_ID, :NAME DO BEGIN SUSPEND; END END END
|
получить все дерево запросом
| Код | SELECT * FROM GET_TREE(NULL)
|
|