[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Sep 2005
    Beiträge
    79

    dynamisches SQL

    Hallo Wissende,

    mit embedded SQL im RPG möchte ich aus dem Artikelstamm Artikel abgreifen, die in einer anderen Datei nicht enthalten sind. Nun ist diese zweite Datei aber jeweils in Kalenderjahre aufgespalten. Ab dem Jahr 2000 hab ich somit 9 Dateien. Mit dyn. SQL hab ich es versucht um mit einer Schleife die Dateinamen variabel einzubinden.
    Damit überschreite ich allerdings die max. Länge von 1024 für die Variable beim PREPARE.
    Wie kann ich diese Begrenzung umgehen?

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    - mit einer view z.B.
    ich würde aber erst mal darüber nachdenken ob dieses Design angemessen ist!!!

    D*B

    Zitat Zitat von Armin Beitrag anzeigen
    Hallo Wissende,

    mit embedded SQL im RPG möchte ich aus dem Artikelstamm Artikel abgreifen, die in einer anderen Datei nicht enthalten sind. Nun ist diese zweite Datei aber jeweils in Kalenderjahre aufgespalten. Ab dem Jahr 2000 hab ich somit 9 Dateien. Mit dyn. SQL hab ich es versucht um mit einer Schleife die Dateinamen variabel einzubinden.
    Damit überschreite ich allerdings die max. Länge von 1024 für die Variable beim PREPARE.
    Wie kann ich diese Begrenzung umgehen?
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Die max. Länge eines SQL's ist 32760 !
    Du kannst also die Variable entsprechend lang gestalten.

    Ich würde aber auch Dieter folgen und eine View über diese 9 Dateien (spater 10, 11, usw) legen:

    create view myview
    (select .... from jahr1
    union all
    select ... from jahr2
    union all
    select ... from jahr3
    :
    :
    )

    Dann kannst du mit dieser View joinen und wenn dann weitere Jahre dazukommen, brauchst du nur die View zu ändern.
    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
    Hallo,

    zunächst 2 Fragen:
    1. Welches RPG verwendest Du RPGIII oder RPGIV? (Wobei, wenn ich mich recht erinnere die Grenze bei RPGIII bei 256 Zeichen lag)
    2. Unter welchem Release arbeitest Du?

    Eigentlich müsste in den letzten Releasen ein String von 32.740 Byte Länge im Prepare-Statement verarbeitet werden können. Prüfe sicherheitshalber, ob Deine Variable nicht nur auf 1024 Zeichen begrenzt ist.

    Sollte das nicht helfen ist, müsste ich das Statement sehen, um feststellen zu können, ob es vereinfacht werden kann.
    Ansonsten kann man versuchen eine View anzulegen, in der alle Dateien verknüpft werden und diese dann im embedded SQL verwenden (ist so wie so die elegantere Lösung)

    Ansonsten könnte noch eine Hilfsdatei generiert werden und mit den entsprechenden Sätzen gefüllt werden.

    Oder das SQL-Statement wird in mehrere SQL-Statements gesplittet und das Ergebnis in einer Feldgruppe (oder Array-Datenstruktur) gespeichert und dann weiterverarbeitet.

    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
    Mar 2002
    Beiträge
    5.365
    @View: ich habe da weniger an eine union view gedacht, die läuft unter DB2/400 meist sehr bescheiden. Mit Views kriegt man die meisten Statements stark vereinfacht (dazu sind diese Dinger nämlich unter anderem da!!!) und damit auch verkürzt.
    @temporäre Datei: das macht den Huddel noch größer!
    @elegant: diese Daten gehören eigentlich in eine Datei mit einem Feld Jahr (or whatever) und unter einige hunder Millionen Sätzen gibt es keinen Grund das nicht zu tun. Damit eventuell vorhandene Programme, die diesen Huddel mit Jahresdateien verarbeiten keinen Schnupfen kriegen, stellt man auf diese Datei dann n Views, die jeweils ein Jahr rausziehen und so wie bisher heißen.

    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/

  6. #6
    Registriert seit
    Sep 2005
    Beiträge
    79
    Danke erstmal für alle Bemühungen.

    Mit der View habt Ihr natürlich Recht. Aber wie Hr. Bender bereits anmerkte, gibts natürlich jede Menge Altprogramme und da ran zu gehen ......

    Mein Programm soll ein Reorg werden. Die Performance ist nicht ausschlaggebend. Ich arbeite im Free-RPG unter V5.4. Die Variable kann ich beliebig groß definieren. Der Compiler akzeptiert mehr als 2000Byte. Der Debugger zeigt dann aber nur 1024. Ist hier etwas einstellbar?

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wenn du den STRDBG verwendest, dann einfach "eval myvar : c "
    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
    Sep 2005
    Beiträge
    79
    Der strdbg wie auch der Debugger von RDi zeigen 1024 Byte.
    Ob im strdbg eval myvar oder eval myvar : c erscheint das gleiche Ergebnis.

    Das Lineal endet bei 1024. Es scheint der Compiler hier zu kappen.

    Anweisung:
    D
    ARTIKLselect S 2400AVarying

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Versuch's mal im Debugger mit einem Substring:

    PHP-Code:
    Eval %Substr(MyVAr 1025 100
    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

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    eval ARTIKLselect : c 2400
    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
    Sep 2005
    Beiträge
    79

    Thumbs up Debugger

    Fr. Hauser, Hr. Fuerchau und Hr. Bender,

    besten Dank für Ihre Unterstützung. Richtig war tatsächlich nur die begrenzte Darstellung in beiden Debuggern.

    Mein Problem habe ich jetzt über "union" dynamisch zusammengesetzt. Laufzeit ca. 1/2 Min. und somit absolut zufriedenstellend.

    Noch eine Frage:
    Lässt sich auch der RDi-Debugger dazu bewegen über die 1024 Stellen hinaus anzuzeigen?

    Besten Dank für die prompte Hilfe.

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    mit dem RDI Debugger kenne ich mich zwar nicht aus, aber good old Praxis ist bei mir, dass alle im Programm zusammen gebastelten Statements aus der Applikation raus gelogt werden, entweder schnöde mit QMHSNDPM ins Joblog, oder schicker per logger (gibt es auch als Freeware von TR auf der Tools400.de).

    D*B

    Zitat Zitat von Armin Beitrag anzeigen
    Fr. Hauser, Hr. Fuerchau und Hr. Bender,

    besten Dank für Ihre Unterstützung. Richtig war tatsächlich nur die begrenzte Darstellung in beiden Debuggern.

    Mein Problem habe ich jetzt über "union" dynamisch zusammengesetzt. Laufzeit ca. 1/2 Min. und somit absolut zufriedenstellend.

    Noch eine Frage:
    Lässt sich auch der RDi-Debugger dazu bewegen über die 1024 Stellen hinaus anzuzeigen?

    Besten Dank für die prompte Hilfe.
    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. Dynamisches SQL in einem CL erstellen
    By Sony in forum IBM i Hauptforum
    Antworten: 27
    Letzter Beitrag: 20-07-09, 21:48
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  4. dynamisches SQL
    By redsky in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 06-12-05, 11:23
  5. Dynamisches SQL
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 15-11-05, 11:45

Berechtigungen

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