[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.053
    @Dieter

    ich brauche diese Felder, da im SQL
    (Birgitta, verzeih mir die fehlenden Fachbegriffe)
    in einer Abfrage mit
    Code:
    WITH a as ...
    kein
    Code:
    where lfnr = :LFNR
    möglich ist.

    Und die findigen Kollegen probieren das natürlich gleich mal in Ihren Programmen aus.
    Mir hat diese Idee von Birgitta damals SEHR!! geholfen diese riesigen SQL abfragen zum laufen zu bekommen.

    und ja ... es hätte andere Wege gegeben ...
    (z.B. ohne SQL )

    (Es geht ja alles, mir ist heute nur das Joblog aufgefallen)

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.392
    Zitat Zitat von Robi Beitrag anzeigen
    @Dieter

    ich brauche diese Felder, da im SQL
    (Birgitta, verzeih mir die fehlenden Fachbegriffe)
    in einer Abfrage mit
    Code:
    WITH a as ...
    kein
    Code:
    where lfnr = :LFNR
    möglich ist.

    Und die findigen Kollegen probieren das natürlich gleich mal in Ihren Programmen aus.
    Mir hat diese Idee von Birgitta damals SEHR!! geholfen diese riesigen SQL abfragen zum laufen zu bekommen.

    und ja ... es hätte andere Wege gegeben ...
    (z.B. ohne SQL )

    (Es geht ja alles, mir ist heute nur das Joblog aufgefallen)

    Robi
    ... du baust doch anschließend den CTE (dat Dingens bei dem with) in ein select ein, da kann man doch dann die where Klausel entsprechend erweitern, oder hast du mal ein Beispiel, wo das nicht geht?

    Dieter
    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
    Aug 2001
    Beiträge
    2.945
    Wenn ich mich recht erinnere hatte ich die Globalen Variablen damals in Rekursiven CTEs, die ich in Views hinterlegt hatte verwendet, um den Anfangspunkt zu setzen.

    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

  4. #4
    Registriert seit
    Mar 2002
    Beiträge
    5.392
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Wenn ich mich recht erinnere hatte ich die Globalen Variablen damals in Rekursiven CTEs, die ich in Views hinterlegt hatte verwendet, um den Anfangspunkt zu setzen.

    Birgitta
    ... wie belegt man das dann in einer View mit einem variablen Wert, den man nicht anderweitig genauso zur Verfügung hat?

    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/

  5. #5
    Registriert seit
    Aug 2001
    Beiträge
    2.945
    Globale SQL-Variablen funktionieren ähnlich wie Datenbereiche in der QTEMP auch wenn die Variable als permanentes Objekt in einer beliebigen Bibliothek gespeichert ist. Der Wert der Variablen wird innerhalb des Jobs vor Aufruf/Ausführung der View gesetzt, einfach mit dem SQL Statement SET. Die globale Variable selber wird in der View-Definition angegeben (wie andere Spalten, Special Registers oder konstante Werte). Die globale Variable muss allerdings vor Erstellung der View generiert sein.

    In mehreren Jobs kann die gleiche (globale) Variable unterschieldiche Werte haben.
    Beispiel: Stücklisten-Auflösung. In Job1 wird die Artikel-Nr. 4711 analysiert, während im zweiten Job die Artikel-Nr. 5713 verwendet wird.

    Job1:
    Code:
    Set ArtikelNr = '4711';
    Select * from View;
    Job2:
    Code:
    Set ArtikelNr = 5713';
    Select * From View
    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

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.392
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Globale SQL-Variablen funktionieren ähnlich wie Datenbereiche in der QTEMP auch wenn die Variable als permanentes Objekt in einer beliebigen Bibliothek gespeichert ist. Der Wert der Variablen wird innerhalb des Jobs vor Aufruf/Ausführung der View gesetzt, einfach mit dem SQL Statement SET. Die globale Variable selber wird in der View-Definition angegeben (wie andere Spalten, Special Registers oder konstante Werte). Die globale Variable muss allerdings vor Erstellung der View generiert sein.

    In mehreren Jobs kann die gleiche (globale) Variable unterschieldiche Werte haben.
    Beispiel: Stücklisten-Auflösung. In Job1 wird die Artikel-Nr. 4711 analysiert, während im zweiten Job die Artikel-Nr. 5713 verwendet wird.

    Job1:
    Code:
    Set ArtikelNr = '4711';
    Select * from View;
    Job2:
    Code:
    Set ArtikelNr = 5713';
    Select * From View
    Birgitta
    ... das ist doch wieder so ein "just to fool the russians" Feature nach dem Motto: Zaubertuch in den Hut, Kaninchen raus. (Was passiert da eigentlich, wenn man noch kein Set gemacht hat, geht es dann ab in den Wald?) Und ich sehe die View immer noch nicht, für die man sowas braucht - und zur Parametrisierung gibt es ja auch noch UDTFs, bei denen man einen klaren Zusammenhang zwischen reingehenden Werten und rauskommenden Daten sieht. Naja, Spielzeug, für Leute, die zuviel Zeit haben (denen ich weiterhin viel Spass wünsche)...

    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/

  7. #7
    Registriert seit
    Aug 2001
    Beiträge
    2.945
    Zitat Zitat von BenderD Beitrag anzeigen
    Was passiert da eigentlich, wenn man noch kein Set gemacht hat, geht es dann ab in den Wald?
    Man kann natürlich einen Default-Wert bei der Variablen-Definition vorgeben.

    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
    Feb 2001
    Beiträge
    20.808
    Da entzieht sich mir auch der Sinn einer globalen Variable, wenn sie denn doch jobspezifisch ist und somit eine lokale Varibale ist.
    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
    Mar 2002
    Beiträge
    5.392
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Da entzieht sich mir auch der Sinn einer globalen Variable, wenn sie denn doch jobspezifisch ist und somit eine lokale Varibale ist.
    ... die ist Connection spezifisch, sprich ACTGRP level und dass man eine lokale Variable global nennt und den Typ global festlegt, aber lokal verwendet, erhöht den Verwirrungsfaktor, das hat richtig Potential - und ich sehe einige Gesichter vor mir, die das ausloten werden (nach dem Motto: ich habe hier eine Lösung und suche das passende Problem), oder bereits tun...

    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/

  10. #10
    Registriert seit
    Aug 2001
    Beiträge
    2.945
    War es vielleicht besser, dass man das Ding LOCAL Data Area (*LDA) genannt hat, jedoch den Inhalt GLOBAL (programmunabhängig) für den ganzen Job verwendet hat??????

    In diesem Fall finde ich GLOBAL für den ganzen Job im Gegensatz zu LOKAL (programm-intern) fast logischer!

    ... vielleicht solltet Ihr Euch bei der IBM oder auch bei denjenigen, die den SQL Standard definieren beschweren. Die haben nämlich diese Namensgebung verbrochen!

    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

  11. #11
    Registriert seit
    Mar 2002
    Beiträge
    5.392
    Zitat Zitat von B.Hauser Beitrag anzeigen
    War es vielleicht besser, dass man das Ding LOCAL Data Area (*LDA) genannt hat, jedoch den Inhalt GLOBAL (programmunabhängig) für den ganzen Job verwendet hat??????

    In diesem Fall finde ich GLOBAL für den ganzen Job im Gegensatz zu LOKAL (programm-intern) fast logischer!

    ... vielleicht solltet Ihr Euch bei der IBM oder auch bei denjenigen, die den SQL Standard definieren beschweren. Die haben nämlich diese Namensgebung verbrochen!

    Birgitta
    ... das ist doch mal ein treffender Vergleich LDA mit create variable, das hat beides Potential für Murks!
    Ob ich mich da über den SQL Standard beschweren muss? ich meine eher nicht, das ist m. E. keiner. Gefunden habe ich das nur bei SQL Anywhere und die definieren das Ding auch auf Connection Level und schmeißen das anschließend weg - und das scheint ja bei der 400 anders zu sein.
    Meine Empfehlung ist klar und eindeutig: Finger weg von unnötigen Gimmicks - und ich habe sowas noch nicht vermisst und sehe auch momentan kein Beispiel, wo das einen realen Vorteil hat. Guter Programmierstil zeichnet sich oft dadurch aus nur das zu benutzen, was man braucht und nicht dadurch so viel wie möglich von dem zu verwenden, was es da so alles gibt.

    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. SQL Fetch
    By mk in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 09-05-12, 17:06
  2. Embedded SQL (EXEC SQL) und QMHRCVPM
    By dirkus in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 23-07-08, 09:35
  3. Einfache Abfrage in COBOL/400 mit EXEC SQL
    By AS400-Anfänger in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 27-06-06, 14:18
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 10:43
  5. CL Variable an SQL übergeben
    By Jenne in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 23-08-04, 11:45

Berechtigungen

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