Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Recursive Stored Procedure (https://www.delphipraxis.net/152826-recursive-stored-procedure.html)

ibp 8. Jul 2010 11:51

Datenbank: Interbase • Version: 6.5 • Zugriff über: PSQL

Recursive Stored Procedure
 
Hallo

ich versuche über eine SP Bauminformationen einer Tabelle abzurufen, aber leider klappt das nicht.

Es werden teilweise Datensätze nicht angezeigt. Kann mir aber leider nicht erklären warum!

Der Baum ist definiert durch PKEY und PARKEY

SQL-Code:
CREATE PROCEDURE P_TEST_ITERATE_TREE(
    START_TREEPKEY VARCHAR(32) CHARACTER SET NONE)
RETURNS (
    O_TREETITLE VARCHAR(60) CHARACTER SET NONE,
    O_TREEPKEY CHAR(32) CHARACTER SET NONE)
AS
declare variable V_TREEPKEY varchar(32);
BEGIN
  SELECT MY_TITEL, MY_PKEY
    FROM MY_TREETAB
   WHERE MY_PKEY = :START_TREEPKEY
    INTO :O_TREETITLE, :O_TREEPKEY;

   SUSPEND;

   FOR SELECT ITRE_PKEY
         FROM INKATREE
        WHERE MY_PARKEY = :O_TREEPKEY
         INTO :V_TREEPKEY
           DO
   BEGIN
      EXECUTE PROCEDURE P_TEST_ITERATE_TREE (:V_TREEPKEY) RETURNING_VALUES :O_TREETITLE,:O_TREEPKEY;

      SUSPEND;
   END
END
Vielleicht hat ja jemand eine Ahnung warum das so ist!

Danke schon mal....

borwin 8. Jul 2010 12:58

AW: Recursive Stored Procedure
 
Hallo,

versuche mal folgendes. Mit Deiner Variante bekommst Du nur einen Datensatz zurück.
EXECUTE Prozedur liefert immer nur eine Zeile.

SQL-Code:
 FOR SELECT ITRE_PKEY
         FROM INKATREE
        WHERE MY_PARKEY = :O_TREEPKEY
         INTO :V_TREEPKEY
           DO
   BEGIN
       SUSPEND;
       -- Jetzt noch alle childs einsammeln
       FOR SELECT O_TREETITLE,:O_TREEPKEY
           FROM P_TEST_ITERATE_TREE (:V_TREEPKEY)
           INTO :O_TREETITLE, :O_TREEPKEY
       DO
       BEGIN      
          suspend;
       END    
   END
Gruß Borwin

ibp 8. Jul 2010 13:47

AW: Recursive Stored Procedure
 
ja das war das Problem nun klappt es...thx :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz