1. #1
    Lieutenant
    Dabei seit
    Sep 2005
    Ort
    München
    Beiträge
    731

    MySQL - Function (if)

    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

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.
  3. #2
    Commander
    Dabei seit
    Apr 2004
    Beiträge
    2.791

    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;

  4. #3
    Lieutenant
    Ersteller dieses Themas

    Dabei seit
    Sep 2005
    Ort
    München
    Beiträge
    731

    AW: MySQL - Function (if)

    Oh man.. natürlich! Das "END IF;" habe ich vergessen.
    Danke!

  5. #4
    Lieutenant
    Ersteller dieses Themas

    Dabei seit
    Sep 2005
    Ort
    München
    Beiträge
    731

    AW: MySQL - Function (if)

    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"
    Geändert von secret_3des (08.08.2007 um 14:32 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •