BEGIN
FOR
WITH RECURSIVE T (ID, TreePath, TreeLevel) AS (
SELECT A.ID, CAST(ib_lpad(CAST(A.PosIndex AS VARCHAR(10)), 10, '0') AS VARCHAR(1000)) AS TreePath, 1 AS TreeLevel
FROM PLMJONodes A
WHERE A.Parent_ID = :AParent_ID AND A.Master_ID IS NULL
UNION ALL
SELECT B.ID, CAST(T.TreePath || ib_lpad(CAST(B.PosIndex AS VARCHAR(10)), 10, '0') AS VARCHAR(1000)) AS TreePath, T.TreeLevel + 1 AS TreeLevel
FROM PLMJONodes B
JOIN T ON B.Master_ID = T.ID
)
SELECT T.ID, T.TreePath, T.TreeLevel
FROM T
INTO :ID, :TreePath, :TreeLevel
DO BEGIN
SUSPEND;
END
END;