Stored Procedures: Juchu!
Peter Thomassen
- datenbank
Tag,
in http://forum.de.selfhtml.org/archiv/2006/2/t123007/ hatte ich eine Frage zur Ermittlung der Wurzel eines in einer Datenbank abgebildeten Baumes via Stored Procedures gestellt. Ich hab's nun, nach wie vor unter Verwendung von MySQL, hinbekommen:
DELIMITER //
CREATE FUNCTION contractMain (temp INT)
RETURNS INT
READS SQL DATA
BEGIN
DECLARE _parent_id INT;
REPEAT
SET _parent_id = temp;
SELECT parent_id INTO temp FROM contract WHERE id = _parent_id;
UNTIL temp IS NULL
END REPEAT;
RETURN _parent_id;
END;//
Es könnte praktisch werden, auch eine Funktion zu haben, um den Vater zu ermitteln, damit der Code dafür jeweils nicht so lang ist. Wäre es dann der Konsistenz halber sinnvoll, diese Funktion auch in der oben stehenden einzusetzen, oder sollte man das der Performance halber lassen?
Danke!
Peter
Nacht,
habe schon von alten ORACLE- Zeiten geträumt, "oha, stored procedures ..." und gleich in phpmyadmin eingegeben:
CREATE FUNCTION contractMain (temp INT)
RETURNS INT
READS SQL DATA
BEGIN
DECLARE _parent_id INT;
REPEAT
SET _parent_id = temp;
SELECT parent_id INTO temp FROM contract WHERE id = _parent_id;
UNTIL temp IS NULL
END REPEAT;
RETURN _parent_id;
END;
#1064 - Fehler in der Syntax bei '(temp INT)
RETURNS INT
READS SQL DATA
BEGIN
DECLARE _pa' in Zeile 1.
Blubbb ... Seifenblase geplatzt.
Kalle
Hallo Kalle,
#1064 - Fehler in der Syntax bei '(temp INT)
RETURNS INT
READS SQL DATA
BEGIN
DECLARE _pa' in Zeile 1.Blubbb ... Seifenblase geplatzt.
hast du denn überhaupt einen mysqld >= 5.0 am laufen?
Gruß,
Benne
hast du denn überhaupt einen mysqld >= 5.0 am laufen?
ach soooo, davon war ja keine Rede. Habe die gute alte Museumsversion 3.23.58
Eine UPDATE- Anfrage an meinen Provider internet24 wurde gerade gestern so beantwortet:
"Als neue Version der MySQL bieten wir Ihnen neben der aktuellen
3.2 außerdem die Version 4."
Ist die 5 stabil?
Wenn ja, wer bietet sie an?
Gruß, Kalle
Tag,
Eine UPDATE- Anfrage an meinen Provider internet24 wurde gerade gestern so beantwortet:
"Als neue Version der MySQL bieten wir Ihnen neben der aktuellen
3.2 außerdem die Version 4."Ist die 5 stabil?
Ja.
Wenn ja, wer bietet sie an?
Ich :-) S. URL oben.
Dass das mit phpMyAdmin nicht funktioniert, kann auch daran liegen, dass phpMyAdmin SQL-Befehle irgendwie parst, um sie farbig darstellen zu können etc.; wer weiß, ob da nicht auch kleine "Optimierungen" vorgenommen werden, die schiefgehen, wenn phpMyAdmin nicht auf Stored Procedures vorbereitet ist (ist ja in MySQL noch recht neu).
Außerdem wird das "Befehlsschlusszeichen" ja auf // geändert, weil eine Stored Procedure als zusammenhängender Befehl eingegeben muss, der ja aber selbst Strichpunkte enthält. Möglicherweise macht phpMyAdmin in dem Zusammenhang auch was falsch.
Bye,
Peter
Hallo,
..., die schiefgehen, wenn phpMyAdmin nicht auf Stored Procedures vorbereitet ist (ist ja in MySQL noch recht neu).
wovon auszugehen ist, denn in der phpmyadmin Changelog ist nicht erwähnt, dass es Stored Procedures beherrschen würde.
Gruß,
Benne
Tag,
..., die schiefgehen, wenn phpMyAdmin nicht auf Stored Procedures vorbereitet ist (ist ja in MySQL noch recht neu).
wovon auszugehen ist, denn in der phpmyadmin Changelog ist nicht erwähnt, dass es Stored Procedures beherrschen würde.
Ja, aber es muss ja nicht unbedingt sein, dass phpMyAdmin das nicht auch so kann.
Bye,
Peter