🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.interbase.sql
Article #593

Re: Recursive Stored Procedure

#593
From: Bill Todd
Date: Sun, 14 Oct 2007 15:04
64 lines
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-mail
References: <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