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:
Das Problem ist, dass das mit dem IF-THEN (ELSE) nicht funktioniert. Es kommt immer wieder ein 1064 Fehler:Code:delimiter // CREATE FUNCTION test (val1 INT, val2 INT, val3 INT) RETURNS INT BEGIN IF val1 = val2 THEN RETURN 0; RETURN 1; END; //
Ich hab schon diverse Möglichkeiten ausprobiert..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
(das gleiche ohne THEN bzw. mit DOCode:IF (val1 = val2) THEN ..
Wer weiß Rat? Wie muss diese Funktion aussehen?
Danke!
Gruß,
Tom
Thema: MySQL - Function (if)
-
07.08.2007, 20:17 #1
MySQL - Function (if)
- Anzeige
Logge dich ein, um diese Anzeige nicht zu sehen. -
07.08.2007, 20:33 #2
AW: MySQL - Function (if)
Code:CREATE FUNCTION test (val1 INT, val2 INT, val3 INT) RETURNS INT BEGIN IF val1=val2 THEN RETURN 0; END IF; END;
-
07.08.2007, 21:09 #3
AW: MySQL - Function (if)
Oh man.. natürlich! Das "END IF;" habe ich vergessen.
Danke!
-
08.08.2007, 14:10 #4
AW: MySQL - Function (if)
Ich hätte da nochmal ein Anliegen bzgl. einer MySQL Function. Die Funktion sieht so aus:
Jetzt würde ich die Funktion gerne so aufrufen: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; //
Geht aber leider so nicht, weil er das SELECT MAX(..) .. nicht zulässt. Jemand eine Idee wie ich das anders lösen kann?Code:SELECT f_highest(attribut, [b]SELECT MAX(attribut) FROM tabelle[/b], 20) FROM tabelle;
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"Geändert von secret_3des (08.08.2007 um 14:32 Uhr)

Zitieren