MySQL - Function (if)

secret_3des

Lieutenant
Registriert
Sep. 2005
Beiträge
822
Hallo!

Ich komme mit dem Erstellen einer eigenen Funktion bei MySQL einfach nicht weiter. Auch das bemühen einer Suchmaschine hat mir nicht wirklich geholfen. Keine Treffer, die auf mein Problem passen.

Ich will (im Prinzip) folgende Funktion erstellen:

Code:
delimiter //
CREATE FUNCTION test (val1 INT, val2 INT, val3 INT) RETURNS INT
BEGIN
IF val1 = val2 THEN RETURN 0;
RETURN 1;
END;
//

Das Problem ist, dass das mit dem IF-THEN (ELSE) nicht funktioniert. Es kommt immer wieder ein 1064 Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5

Ich hab schon diverse Möglichkeiten ausprobiert..
Code:
IF (val1 = val2) THEN ..
(das gleiche ohne THEN bzw. mit DO

Wer weiß Rat? Wie muss diese Funktion aussehen?

Danke!

Gruß,
Tom
 
Code:
CREATE FUNCTION test (val1 INT, val2 INT, val3 INT) RETURNS INT
BEGIN
  IF val1=val2 THEN 
    RETURN 0;
  END IF;
END;
 
Ich hätte da nochmal ein Anliegen bzgl. einer MySQL Function. Die Funktion sieht so aus:
Code:
delimiter //
CREATE FUNCTION f_highest (val DOUBLE, maxi DOUBLE, d DOUBLE) RETURNS INT
BEGIN
DECLARE lvl INT;
SET lvl = -1;
IF val = maxi THEN SET lvl = 0;
ELSE SET lvl = ROUND_UP((maxi - val) / d);
END IF;
RETURN lvl;
END;
//

Jetzt würde ich die Funktion gerne so aufrufen:
Code:
SELECT f_highest(attribut, [b]SELECT MAX(attribut) FROM tabelle[/b], 20) FROM tabelle;

Geht aber leider so nicht, weil er das SELECT MAX(..) .. nicht zulässt. Jemand eine Idee wie ich das anders lösen kann?

Danke im Voraus!

edit: Gleich noch ne Frage.. Wer kennt eine gute Referenz bzw. gute Beispiele für MySQL Funktionen? Die MySQL-Referenz gibt da find ich nicht soo viel her. Die Beispiele sind sehr simpel und wenig hilfreich. Gesucht habe ich bereits, hab aber nichts wirklich brauchbares gefunden. Wäre also sehr dankbar für Tipps!

Gibt es eine Möglichkeit mit Mengen zu arbeiten bei Funktionen? Ich würde gerne sowas in der Art machen:
Code:
CREATE FUNCTION f_verwursten ("menge INT") RETURNS INT
BEGIN
DECLARE lvl INT;
SET lvl = -1;
"LOOP alle Zahlen aus menge verwursten und lvl zuweisen"
RETURN lvl;
END;
//

Code:
SELECT f_verwursten("{f1(..), f2(..), .. }) FROM tabelle"
 
Zuletzt bearbeitet:
Zurück
Oben