[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2005
    Beiträge
    425
    Hi,
    das finde ich SUUUUPER Interessant.
    nur verstehen tuh ich das nicht

    Ich habe nun bei mir

    Code:
    With x as (Select Row_Number() over(Order By kkmanr, rrn(a)) as seq, 
    a.*           from ankkop a where kkmanr = 1082),                    
     y as (Select kkmanr, sys_connect_by_path(Trim(digits(KKLFDN)), ' ') as Text 
                  from x                                                 
                  Start With kkmanr = 1082 and seq = 1                   
                  connect by Prior Seq = Seq - 1)                        
    Select kkmanr, Max(Text) Text                                        
    From y                                                               
    Group By kkmanr

    um alle kklfdn hintereinander zu bekommen, die der kkmanr= 1082 hat.

    das Ergebnis ist aber
    Code:
     MANDANTEN-NR  TEXT    
           1.082   *POINTER
    Was mach ich falsch?

    Danke
    der ILEMax

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Was mach ich falsch?
    Du verwendest STRSQL!
    Das Ergebnis aus sys_connect_by_path() ist ein Large Object. Large Objects können nur mit System-i-Navigator angezeigt werden. Anderenfalls must Du das Ergebnis in CHAR oder VARCHAR umwandeln.

    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

  3. #3
    Registriert seit
    Sep 2005
    Beiträge
    425
    ich hab das
    Code:
    sys_connect_by_path(Trim(digits(KKLFDN)), ' ') as Text
    geändert in
    Code:
    char(sys_connect_by_path(Trim(digits(KKLFDN)), ' ')) as Text
    und bekomme
    Code:
     Ergebnis zu lang.
    als Meldung, (auch bei varchar)

    obwohl nur 3 Werte a 7 byte vorhanden sind

    ILEMax

  4. #4
    Registriert seit
    Aug 2003
    Beiträge
    1.508

  5. #5
    Registriert seit
    Sep 2005
    Beiträge
    425
    nö, immer 'Ergebnis zu lang'

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Mittels SUBSTR solltest du eigentlich einen Teil herausbekommen.
    Allerdings ist die Funktion auf 1Mb beschränkt und arbeitet nicht "distinct".
    Solltest du also doch mehr Werte haben, liegts nicht am substring sondern an der Verkettung.

    Ggf. also vorher per DISTINCT auf eindeutige Werte reduzieren.

    Das Ergebnis des sys_connect_by_path kannst du auch vorher casten:

    cast(sys_connect_by_path(...) as varchar(nn)) as Text

    Siehe auch hier:
    http://publib.boulder.ibm.com/infoce...61%74%68%22%20
    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

  7. #7
    Registriert seit
    Sep 2005
    Beiträge
    425
    Danke,
    aber ...

    das geht leider auch nicht

    hier mal mein Befehl
    Code:
    With x as (Select Row_Number() over(Order By kkmanr, rrn(a)) as seq,
    a.*           from ankkop a where kkmanr = 38),                     
    y as (Select kkmanr, cast(char(sys_connect_by_path(                 
    Trim(digits(KKLFDN)), ' ')) as varchar(10000)) as Text              
                  from x                                                
                  Start With kkmanr =  38 and seq = 1                   
                  connect by Prior Seq = Seq - 1)                       
    Select kkmanr, Max(Text) as Text                                    
    From y                                                              
    Group By kkmanr
    Die Datei hat 6 Sätze mit kkmanr = 38, kklfdn ist 7P 0 definiert

    Sql sagt: "Ergebnis zu lang"

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Schau mal deinen SQL genau an, da ist ein cast zu viel drin!

    Lass mal char(......) weg!

    Die Funktion CHAR versucht nämlich einen CAST(... as char(1000000)) und das ist natürlich zu lang!

    PS:
    Auch der TRIM bei Digits ist unsinnig, da Digits keine Leerzeichen zurückgibt.
    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

  9. #9
    Registriert seit
    Sep 2005
    Beiträge
    425
    Der Hammer, es funktioniert!

    Danke!!!!!!

    Wenn das jetzt noch jemand erklären könnte ...

    ok mit dem 1. With wird eine Arbeitsdatei erstellt, die ...

    ok ich versuch mal das SQL Buch zu interwiewen.
    Verstanden hab ich es nicht, aber es geht ... Klasse!!

    Der glückliche ILEMax

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Weiteres siehst du hier:
    hierarchical queries
    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

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hier ist auch noch ein Artikel zu dem Thema Hierarchische Queries:
    Hierarchical Queries with DB2 Connect By

    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. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

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