Та это всё ерунда. Если делать, то надо ООП тулить.
Например интерфейсы для таблиц:
CREATE INTERFACE IParent
(
Id INTEGER NOT NULL PRIMARY KEY,
Parent INTEGER REFERENCEC(Id)
)
А потом что-то типа
1) CREATE TABLE Catalog : IParent;
2) CREATE PROCEDURE GetHierarchy<IParent>
(
Id INTEGER
)
RETURNS IParent
AS ...
3) DECLARE CURSOR MyCursor IParent;
MyCursor = (IParent) Catalog;
При этом все конструкции остаются типизированными :-)
Я хотел было предложить такое в трекер, но потом подумал что смысла нет
ибо всё равно ведь не сделают :-(