Peter Thomassen: Stored procedures: Variablen im Cursor

Beitrag lesen

Hallo,

ich bastle grade erstmals mit Stored Procedures. Grundlage ist eine Tabelle contract mit zwei Spalten id und parent_id, wodurch eine Hierarchie abgebildet wird. Ich möchte durch wiederholtes Abfragen von parent_id an die Wurzel des Baums kommen ... Adam sozusagen *g*

Ich hab folgendes:

  
CREATE FUNCTION contractMain (id INT)  
 RETURNS INT  
 BEGIN  
  DECLARE parent_id INT;  
  DECLARE cur1 CURSOR FOR SELECT parent_id FROM contract WHERE id = ?;  
  DECLARE CONTINUE HANDLER FOR NOT FOUND  
   BEGIN  
    CLOSE cur1;  
    RETURN parent_id;  
   END;  
  REPEAT  
   OPEN cur1;  
   FETCH cur1 INTO parent_id;  
   CLOSE cur1;  
  END REPEAT;  
 END;  

Wie man sieht, möchte ich denselben Cursor mehrfach verwenden, allerdings in der WHERE-Klausel verschiedene Werte einsetzen (da wo jetzt das Fragezeichen ist), nämlich den jeweils aktuellen Wert der Variablen parent_id. Wie geht das?

Ich verwende MySQL 5.0.16.

BTW, das ist meine erste Stored Procedure, und ich hab sie noch nicht getestet. Wenn noch was falsch sein sollte, bitte mitteilen :-)

Danke!
Peter