[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    1.975

    exec sql drop variable

    Hi *all

    habe hier in einem SQLRPGLE Pgm folgende Befehle
    Code:
    C/EXEC SQL     DROP TABLE QTEMP/KPI_ZV                 
    C/END-EXEC                                             
    C/EXEC SQL     DROP   VARIABLE LFNR2                   
    C/END-EXEC                                             
    C/EXEC SQL     DROP   VARIABLE RRTT2                   
    C/END-EXEC                                             
    C/EXEC SQL     DROP   VARIABLE RRMM2                   
    C/END-EXEC                                             
    C/EXEC SQL     DROP   VARIABLE RRJJ2                   
    C/END-EXEC                                             
    C/EXEC SQL     DROP   VARIABLE SQ_DATUM                
    C/END-EXEC                                             
    C/EXEC SQL     CREATE VARIABLE LFNR2 DECIMAL (2, 0)    
    ...
    Wenn das Pgm läuft habe ich im Joblog eine Meldung, das die Datei KPI_ZV nicht gelöscht werden konnte, da Sie nicht existiert. --> OK
    Die nächste Meldung im Joblog ist, das LFNR2 der Art *SRVPGM in QGPL bereits vorhanden ist.

    Ich habe keine Erfolg/Mißerfolg Meldung für die DROP Variable ...

    kann das jemand erklähren.

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

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    Zitat Zitat von Robi Beitrag anzeigen
    Hi *all

    habe hier in einem SQLRPGLE Pgm folgende Befehle
    Code:
    C/EXEC SQL     DROP TABLE QTEMP/KPI_ZV                 
    C/END-EXEC                                             
    C/EXEC SQL     DROP   VARIABLE LFNR2                   
    C/END-EXEC                                             
    C/EXEC SQL     DROP   VARIABLE RRTT2                   
    C/END-EXEC                                             
    C/EXEC SQL     DROP   VARIABLE RRMM2                   
    C/END-EXEC                                             
    C/EXEC SQL     DROP   VARIABLE RRJJ2                   
    C/END-EXEC                                             
    C/EXEC SQL     DROP   VARIABLE SQ_DATUM                
    C/END-EXEC                                             
    C/EXEC SQL     CREATE VARIABLE LFNR2 DECIMAL (2, 0)    
    ...
    Wenn das Pgm läuft habe ich im Joblog eine Meldung, das die Datei KPI_ZV nicht gelöscht werden konnte, da Sie nicht existiert. --> OK
    Die nächste Meldung im Joblog ist, das LFNR2 der Art *SRVPGM in QGPL bereits vorhanden ist.

    Ich habe keine Erfolg/Mißerfolg Meldung für die DROP Variable ...

    kann das jemand erklähren.

    Danke Robi
    Wenn Du irgendwelche SQL Objekte ohne Bibliothek anlegst, werden diese bei Verwendung von System Naming in der Bibliothek QGPL erstellt.

    Wenn Du unter System Naming mit DROP ein Objekt löschst, wird die Bibliotheksliste nach dem Objekt durchsucht.

    In Deinem Fall könnte ich mir vorstellen, dass die globale Variable in der Bibliothek x, die vor der QGPL steht gelöscht wird, während in der QGPL die Variable existiert.

    Warum willst Du überhaupt globale Variablen löschen. Die funktionieren wie Datenbereiche in der QTEMP, d.h. Du musst den Inhalt lediglich in jedem Job (über ein SET-Statement) initialisieren.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Moin Birgitta,

    das PGM läuft täglich.
    Wenn ich Systemweit suche, gibt es diese Variablen NUR in der QGPL.
    Alle habe als Erstellungsdatum Monat 6/2012

    Es wurde die Var also noch NIE gedropt (heist das so?)
    Findet SQL keine Var zum droppen, erwarte ich eine MSG im Joblog, wie bei der fehlenden Datei.

    Warum willst Du überhaupt globale Variablen löschen. Die funktionieren wie Datenbereiche in der QTEMP, d.h. Du musst den Inhalt lediglich in jedem Job (über ein SET-Statement) initialisieren.
    Das geht nur in (wenigstens Einigermaßen) dokumentierten Systemen. Hier kann ich nicht garantieren, das nicht ein 'kopiertes Pgm' die Variable auch verwendet, (drop und set), aber als alpa und mit 50 Stellen.

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

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

  5. #5
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    nein, leider nicht.
    der Anwender hätte löschen dürfen!
    (wenn nicht, hätte ich auch da eine MSG im Joblog erwartet)

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

  6. #6
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... ich frage mich jetzt gerade, wie ich bisher ohne sowas ausgekommen bin. Welches Problem wollt ihr damit lösen? oder wollt ihr euch nur ein weiteres schaffen?

    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
    Jun 2001
    Beiträge
    1.975
    @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!)

  8. #8
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    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/

  9. #9
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    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 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  10. #10
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    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/

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.875
    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 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  12. #12
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    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/

Similar Threads

  1. SQL Fetch
    By mk in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 09-05-12, 16:06
  2. Embedded SQL (EXEC SQL) und QMHRCVPM
    By dirkus in forum NEWSboard Programmierung
    Antworten: 10
    Letzter Beitrag: 23-07-08, 08: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, 13:18
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. CL Variable an SQL übergeben
    By Jenne in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 23-08-04, 10:45

Berechtigungen

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