Eigene Funktionen im MySQL

Screenshot MySQL

Die Aufgabe: eine oft benötigte Funktion innerhalb des MySQL ablegen. Eine Struktur (mit unbekannter Tiefe) wurde in einer Tabelle (jeweils ID oben und unten) abgelegt. Die Funktion soll eine beliebige ID in den dazu passenden Pfad umwandeln können.

Die Lösung: eine eigene Funktion im MySQL. Sie sucht – ausgehend von der aktuellen ID – die Parent-ID, löst diese in ihren Bezeichner auf und beendet sich, wenn die aktuelle ID gleich 0 ist.

Screenshot MySQL

DELIMITER $$

DROP FUNCTION IF EXISTS `berichte`.`MW_ID_TO_PATH` $$

CREATE FUNCTION `berichte`.`MW_ID_TO_PATH`
(id INT, binder VARCHAR(10))
RETURNS TEXT
BEGIN
   DECLARE node VARCHAR(200) DEFAULT ;
   DECLARE path TEXT DEFAULT ;

   IF id = 0 THEN
      SET node = ‘ROOT’;
   ELSE
      SET node = (
         SELECT bezeichner FROM schluessel
         WHERE schluesselId = id);
   END IF;

   SET path = CONCAT(path, node);

   WHILE id > 0 DO
      SET id = (
         SELECT schluesselObenId FROM struktur s
         WHERE schluesselUntenId = id);
      IF id = 0 THEN
         SET node = ‘ROOT’;
      ELSE
         SET node = (
            SELECT bezeichner FROM schluessel
            WHERE schluesselId = id);
      END IF;
      SET path = CONCAT(node, binder, path);
   END WHILE;

   RETURN path;
END $$

DELIMITER ;

This entry was posted in Software and tagged . Bookmark the permalink.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>