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

[code lang=“sql“]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 ;[/code]

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.