[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2011
    Beiträge
    5

    Strings in SQL-UDF

    Hallo zusammen,

    ich möchte gern in einem UDF ein Integer durch eine Anzahl von Punkten ersetzen, z.B. Punkte(3) soll mir '...' zurückliefern. Anscheinend ist der String aber nicht veränderbar, jedenfalls bekomme ich immer den leeren String von der ersten Zuordnung. Oder was könnte hier falsch sein?
    Danke für Euer Interesse!

    CREATE FUNCTION PUNKTE(STUFE INTEGER)
    RETURNS VARCHAR(50)
    LANGUAGE SQL
    BEGIN
    DECLARE STUFE INTEGER;
    DECLARE ZEILE VARCHAR(50);
    SET ZEILE = '';
    WHILE STUFE > 0 AND STUFE < 50 DO
    SET ZEILE = STRIP(ZEILE)||'.';
    SET STUFE = STUFE - 1;
    END WHILE;
    RETURN ZEILE;
    END

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Hallo,
    wundert mich, dass du das überhaupt erstellen konntest.
    Entferne die Zeile:
    Code:
    DECLARE STUFE INTEGER;
    Dann sollte es gehen.

  3. #3
    Registriert seit
    Jan 2011
    Beiträge
    5
    Danke, Andreas, das funktioniert!

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Auch hier gilt das Lokalitätsprinzip:
    Variablen, die zwischen BEGIN und END definiert werden, verbergen ausserhalb definierte Variablen. BEGIN/END lässt sich nämlich schachteln.
    Deshalb gabs keinen Umwandlungsfehler.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Deshalb gabs keinen Umwandlungsfehler.
    Ich habe mich deshalb gewundert, weil es bei mir einen Fehler gab, da diese Variable doppelt definiert wurde. (7.1)

  6. #6
    Registriert seit
    Jan 2011
    Beiträge
    5
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Auch hier gilt das Lokalitätsprinzip:
    Variablen, die zwischen BEGIN und END definiert werden, verbergen ausserhalb definierte Variablen. BEGIN/END lässt sich nämlich schachteln.
    Deshalb gabs keinen Umwandlungsfehler.
    Danke, das macht es klar

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Jordi Giacomo Beitrag anzeigen
    ich möchte gern in einem UDF ein Integer durch eine Anzahl von Punkten ersetzen, z.B. Punkte(3) soll mir '...' zurückliefern.
    Warum brauchst Du dazu überhaupt eine UDF?
    Mit der skalaren Funktion kannst Du dies auch direkt haben z.B.:

    Code:
    Select Repeat('.', 3), Trim(MyText) concat Repeat('-', 10)
    From SysIbm/SysDummy1;
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  8. #8
    Registriert seit
    Jan 2011
    Beiträge
    5
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Warum brauchst Du dazu überhaupt eine UDF?
    Mit der skalaren Funktion kannst Du dies auch direkt haben z.B.:

    Code:
    Select Repeat('.', 3), Trim(MyText) concat Repeat('-', 10)
    From SysIbm/SysDummy1;
    Birgitta
    Danke, das ist auch ein guter Tip. Ich wollte das, weil es einfach zu benutzen ist, für eine Stückliste oder einen Nachrichtenbaum oder so etwas. Aber so wäre es auch gut.

Similar Threads

  1. Antworten: 11
    Letzter Beitrag: 18-07-16, 09:49
  2. UDF nicht verwendbar
    By Peder in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 06-12-06, 08:15
  3. SQL UDF Function ausführung mit Fehler
    By jakarto in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-07-06, 13:41
  4. SQL UDF Prob mit leeren Feldern
    By HACHIMAN in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 22-05-06, 09:48
  5. SQL 400 UDF
    By SReusch in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 13-01-06, 07:13

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •