Article View: borland.public.interbase.sql
Article #593Re: Recursive Stored Procedure
From: Bill Todd
Date: Sun, 14 Oct 2007 15:04
Date: Sun, 14 Oct 2007 15:04
64 lines
2355 bytes
2355 bytes
The following stored proc is from a program that stores notes in a
hierarchical structure of categories. This proc is called to populate a
TTreeview that displays the categories.
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE "CATEGORY_TREE"
RETURNS
(
"CATEGORY" VARCHAR(40),
"CATEGORY_ID" INTEGER,
"PARENT_CATEGORY_ID" NUMERIC(18, 0),
"CATEGORY_LEVEL" INTEGER
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE "CATEGORY_TREE"
RETURNS
(
"CATEGORY" VARCHAR(40),
"CATEGORY_ID" INTEGER,
"PARENT_CATEGORY_ID" NUMERIC(18, 0),
"CATEGORY_LEVEL" INTEGER
)
AS
DECLARE VARIABLE I INTEGER;
BEGIN
/* SELECT THE FIRST LEVEL CATEGORIES */
FOR SELECT C.CATEGORY, C.CATEGORY_ID, C.PARENT_CATEGORY_ID, 0
FROM CATEGORY C
WHERE C.PARENT_CATEGORY_ID IS NULL
INTO :CATEGORY, :CATEGORY_ID, :PARENT_CATEGORY_ID, :CATEGORY_LEVEL
DO
BEGIN
/* RETURN THE ROW */
SUSPEND;
/* FOR EACH TOP LEVEL ROW CALL THIS PROCEDURE AGAIN TO GET THE
ROW'S CHILDREN */
FOR SELECT P.CATEGORY, P.CATEGORY_ID, P.PARENT_CATEGORY_ID,
CATEGORY_LEVEL
FROM CATEGORY_SUBTREE(:CATEGORY_ID, :CATEGORY_LEVEL) P
INTO :CATEGORY, :CATEGORY_ID, :PARENT_CATEGORY_ID, :CATEGORY_LEVEL
DO
BEGIN
/* RETURN THE CHILD ROW */
SUSPEND;
END
END
END
^
SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
--
Bill Todd (TeamB)
Technical Details
Message-ID:
<47122ff9$1@newsgroups.borland.com>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news1.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mailReferences:
<47121bc5$1@newsgroups.borland.com>Show Full Headers
Complete Article Headers
X-Google-Thread: 114a0e,7a6fad28b9fa39ec
X-Google-Attributes: gid114a0e,public,usenet
X-Google-Language: ENGLISH,ASCII-7-bit
From: "Bill Todd" <no@no.com>
Subject: Re: Recursive Stored Procedure
Newsgroups: borland.public.interbase.sql
References: <47121bc5$1@newsgroups.borland.com>
Organization: The Database Group, Inc.
User-Agent: XanaNews/1.18.1.6
X-Face: ":yn4zt^A_dn>6~{YJmu^B\'4w)e:apPM\VC=Dvf&*tASxX9|BYczkFd$xr.$vNSZ[3Uobr p]c4\+\l){!WQI.$]veP({HLd;CDYH?iN
NNTP-Posting-Host: 65.118.176.23
Message-ID: <47122ff9$1@newsgroups.borland.com>
Date: 14 Oct 2007 08:04:25 -0700
X-Trace: newsgroups.borland.com 1192374265 65.118.176.23 (14 Oct 2007 08:04:25 -0700)
Lines: 64
X-Authenticated-User: btodd
Path: arc1-ca.pugleaf.net!g2news2.google.com!news1.google.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail