[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    850
    Hi,

    werden bei der Übergabe der Parameter auch alle Stellen gefüllt ?

    evtl. ein Trim auf die Input Variablen machen
    PARFir , ParKdnr

    gruß
    Michael

  2. #2
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Probier mal folgendes:
    Code:
    DO SET ReturnVal = trim (ReturnVal) CONCAT '\' CONCAT trim(CsrC1.wagr);
    lg Andreas

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Warum so kompliziert?
    Du brauchst keinen Cursor:

    return (select ....);
    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

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Return SELECT gibt eine Tabelle zurück!
    Das heißt Äpfel mit Birnen zu vergleichen!

    Die Funktion jedoch verknüpft die einzelnen Warengruppen zu einem einzigen String und gibt diesen String zurück!

    Gibt es bei der Ausführung irgendwelche Fehlermeldungen im Joblog? Am besten Du führst vor Ausführung des SQL Statements zunächst einen STRDBG (ohne weitere Parameter-Übergabe) aus und schaust dann ins Joblog.

    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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ich meine ja auch nicht die Tabelle sondern das ergebnis analog eines Singlesubselects:

    return (
    (select abc concat def from mytable where ...)
    )
    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

  6. #6
    Registriert seit
    Jun 2009
    Beiträge
    7

    erledigt

    Der Hinweis von mk mit dem Trim in der Funktion war die Lösung:

    ... WHERE FIR = trim(PARFir)
    and KDNR = trim(ParKdnr)
    ...

    Danke an euch alle

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dass der Trim von Erfolg gekrönt wird spricht gegen eine korrekte Parameterübergabe. Wenn diese ohne führende Leerzeichen erfolgt dann muss es auch ohne klappen da Leerzeichen am Ende nicht relevant sind.

    Aber ein scalarer Subselect wäre trotzdem einfacher.
    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

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Aber ein scalarer Subselect wäre trotzdem einfacher.
    Das musst Du mal erklären, wie Du mit einem skalaren Subselect die Warengruppen über mehrere (unbestimmt viele) Zeilen als String verknüpfen und dann ausgeben willst!

    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

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ja OK, das habe ich dann doch überlesen.
    Aber gabs da nicht was mit recursiver CTE in einem anderen Beitrag?
    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

  10. #10
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Ja OK, das habe ich dann doch überlesen.
    Aber gabs da nicht was mit recursiver CTE in einem anderen Beitrag?
    Mit Recursiven CTEs geht so was und müsste etwa so aussehen:
    Code:
    with x   as (SELECT ROW_NUMBER() over(partition by FirNr, KndNr ORDER BY rrn(a)) Seq, 
                        a.*
                    FROM Table1 a),
         Rec (FirNr, KndNr, Wagr, Seq) 
             as (      select FirNr, KndNr, x.Wagr, Seq from x where Seq = 1
                 union all
                       select x.FirNr, x.KndNr concat ' ' concat Rec.WaGr,
                              Rec.Seq + 1
                          from x join Rec on     x.FirNr = Rec.FirNr 
                                             and x.KndNr = Rec.KndNr 
                                             and x.Seq   = Rec.seq + 1),
        y    as (select FirNr, KndNr, Max(Seq) Seq 
                    From Rec 
                    Group By FirNr, KndNr)
    select rec.FirNr, rec.KndNr, WaGr 
    from Rec join y Using (FirNr, KndNr, Seq )
    Ob das allerdings einfacher als die kleine UDF ist wage ich zu bezweifeln.

    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

Similar Threads

  1. SQL: NULL als Ergebnis bei vielen Nachkommastellen
    By Booley in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 30-03-12, 12:37
  2. SQL: Ausführungsverhalten einer Funktion in einem CASE-Statement
    By mwithake in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 04-08-09, 14:57
  3. Wirres SQL Ergebnis
    By lyrics in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 24-08-06, 12:10
  4. sql funktion
    By steven_r in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 01-06-06, 12:16
  5. Erstellen Trigger über SQL / Read Funktion
    By GHoffmann in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 07-07-05, 09:18

Tags for this Thread

Berechtigungen

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