[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Oct 2015
    Beiträge
    109

    Question Querys in SQL wandeln und setsppfp

    Hallo zusammen,

    ich möchte gern die alten Querys mit Hilfe einer Programms in SQL Befehle umbauen.
    So weit so gut, wenn da nicht die verschiedenen Outputs wären.

    Bisher geh ich wie folgt vor:

    1. Bibliotheksliste holen
    2. In Schleife die DSPOBJD aller Querys holen
    3. RTVQMQRY pro Query
    4. mit SQL die Überflüssigen Zeilen löschen (alles mit SRCSEQ <
    (select min(srcseq) from xy where upper(srcdta) like '%SELECT' )

    Damit habe ich alle Selects.

    Nun fiel mir auf, dass sämtliche Output Angaben fehlen.
    Ich bin dann bei meiner Suche auf Folgendes gestoßen:

    Code:
    QryObj = Qrslvsp(X'1911' :%trimr(file): %trimr(library): x'0000') ;
    QryPointer = setsppfp(QryObj);
    QryPointer = setsppo(QryPointer:260);
    MemCpy(%Addr(Output):QryPointer:%size(Output));
    Leider brach das bei setsppfp schon mit MCH6801 ab, da meine QSECURITY bei 40 liegt.

    Hat von Euch jemand einen Lösungsvorschlag?
    Gibt es eine Alternative zu setsppfp?

    Bin für jede Hilfe dankbar!

    mfG

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Etwas aufwändiger per DMPOBJ und Auswertung des Spools.
    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

  3. #3
    Registriert seit
    Nov 2003
    Beiträge
    2.304
    Vorsicht mit RTVQMQRY ALWQRYDFN(*YES oder *ONLY).
    Der setzt die "Art der Verknüpfung" nicht (immer) richtig um.
    Zumindest bis V5R4 wird immer ein "inner join" draus.

  4. #4
    Registriert seit
    Oct 2015
    Beiträge
    109
    Danke euch Beiden!

    Das von Pikachu muss ich noch prüfen.

    Ansonsten hab ich das Problem jetzt tatsächlich mit nem dmpobj umgangen:

    DMPOBJ OBJ(LIB/PGM) OBJTYPE(*QRYDFN)

    CPYSPLF FILE(QPSRVDMP) TOFILE(QTEMP/SPOOLPF) CTLCHAR(*FCFC)

    Code:
    with Dump as ( select row_number() over() rw , substr(info, 89, 32)  info
     from qtemp/spoolpf),                                     
    Stern as (                                                
    select rw                                                 
    from dump                                                 
    where info like '%*%')                                    
    select substr(info, locate('*CHANGE', info) -38, 10) Fil, 
           substr(info, locate('*CHANGE', info) -26, 10) Lib, 
           substr(info, locate('*CHANGE', info) -14, 10) Mbr,
           substr(info, locate('*CHANGE', info) -2, 1) Typ    
    from (                                                    
    select d2.info concat d1.info concat d3.info info         
    from dump d1                                              
    join stern on   d1.rw = stern.rw                          
    join dump d2 on d1.rw-1 = d2.rw                           
    join dump d3 on d1.rw+1 = d3.rw                           
    ) a where substr(info, 40) like '%*CHANGE%'
    fetch first row only
    Jetzt nur noch anhand der Infos den SQL vervollständigen.

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Im Query wird die Art der Verknüpfung ja über eine Auswahl 1/2/3 geregelt.
    Diese drückt sich leider nicht im SQL aus, da die Beziehung durch RTV nicht per Join sondern im Where aufgelöst wird. Und dies ist dann leider immer ein Inner Join!
    In diesem Fall ist leider eine manuelle Nachbearbeitung erforderlich.
    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
    Feb 2021
    Beiträge
    21
    Servus,
    ich greife mal dieses alte Thema auf.
    Gibt es mittlerweile eine komfortable Möglichkeit aus den alten Qry ein SQL zu generieren?
    Gruß
    Sven

  7. #7
    Registriert seit
    Jan 2003
    Beiträge
    746

  8. #8
    Registriert seit
    Jan 2007
    Beiträge
    904
    Robert, tztzzz ...
    ... so sehr ich es auch Birgitta gönnen mag.

    Versuch's mal so:
    RTVQMQRY QMQRY(myLib/myQuery) SRCFILE(myLib/mySource*) ALWQRYDFN(*YES)
    *z.B. QSQLSRC
    kf

  9. #9
    Registriert seit
    Jan 2003
    Beiträge
    746
    Aber Karl...

    wir wissen doch, dass die Qualität von Ergebnissen außerhalb der Komfortzone des Entwicklers liegt.

    ;-)

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Wie bereits oben beschrieben, liefert der RTVQMQRY ausschließlich das SQL.
    Die fehlenden Output-Infos gibts weiterhin nur mit den oben genannten Hilfsmitteln.

    Zu beachten ist lediglich, dass der erstellte Query übrigens immer einen Inner join produziert, da die Joinbeziehung in der Where-Klausel steht.
    Die Art der Beziehung (1, 2, 3) aus dem QRYDFN bekommt man leider nur per WRKQRY.
    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
    Feb 2021
    Beiträge
    21
    Moin moin,

    versuche es jetzt mal mit RTVQMQRY. Ist auch eine gute Gelegenheit mal die nicht mehr benötigten QRY auszumisten. Sammelt sich doch viel an.
    Danke für die schnellen Tips.

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.286
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Wie bereits oben beschrieben, liefert der RTVQMQRY ausschließlich das SQL.
    Die fehlenden Output-Infos gibts weiterhin nur mit den oben genannten Hilfsmitteln.

    Zu beachten ist lediglich, dass der erstellte Query übrigens immer einen Inner join produziert, da die Joinbeziehung in der Where-Klausel steht.
    Die Art der Beziehung (1, 2, 3) aus dem QRYDFN bekommt man leider nur per WRKQRY.
    ... das mit dem inner join stimmt so nicht mehr.

    D*B
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

Similar Threads

  1. Ausgabedatei in alten Querys suchen
    By AK1 in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-12-14, 13:18

Tags for this Thread

Berechtigungen

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