[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2002
    Beiträge
    1.122
    Danke,

    habe es jetzt noch eingekürzt.
    Das mit den Parametern habe ich dann glaube ich auch gefressen. Mache ich in Delphi mit durchgriff zur AS/400 ja eigentlich auch so in ähnlicher Form.

    Gruß Ronald

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.942
    Hallo,

    In deinem Programm steht der Close noch an falscher Stelle (mit ODP's) hat das noch nichts zu tun.
    Das Problem bei OPEN und CLOSE ist, dass ein Cursor nicht erneut geöffnet werden kann, wenn er bereits geöffnet ist. Da ein CLOSE eventuell auch mal vergessen wird, ist es am sichersten den Cursor unmittelbar vor dem OPEN (nochmals) zu schließen. War der Cursor zu dem Zeitpunkt geöffnet, wird er geschlossen, war er nicht geöffnet umso besser.

    Bei einem Soft- oder Pseudo-Close (also einem Close im embedded SQL oder in einer SQL-Stored Procedure oder User Defined Function) wird kein wiederverwendbarer ODP gelöscht. Ein Pseudo-Close bewirkt lediglich, dass die Daten in den temporären Objekten des ODP beim nächsten Open aktualisiert werden. Über die Compile-Option CLOSQLCSR wird definiert wann ein Hard Close erfolgen soll, also entweder beim Ende der Aktivierungsgruppe oder beim Ende eines Moduls. Je nachdem wie diese Option eingestellt ist, wird der ODP entweder beim Ende des Moduls oder beim Beenden einer Aktivierungsgruppe komplett gelöscht. Im Klartext heißt das, dass bei einem erneuten Aufruf die komplette Optimierung (Full Open) mit allen Konsequenzen erneut ausgeführt werden muss.

    @Ronald:
    Ich würde das ganze Programm noch wie folgt kürzen:
    PHP-Code:
    d jahr            s              2s 0                   
    d qa              s              2s 0                   
    d anzahl          s              2s 0                   
                                                            
    c                                                       
    c
    /exec sql    Set Option SrtSeq = *LangIdShr            
    c
    /end-exec                   
    C                   Clear     Anzahl  
    c                   
    eval      jahr 07                 
    c                   
    eval      qa   02                                 
    C
    /Exec SQL
    c
    +              Select Count(Distinct(rswoc)) 
    C+              Into :Anzahl 
    c
    +              from   grresp                           
    c
    +              where  rsjah = :jahr                    
    c
    +                and  rsqua = :qa                      
    c
    /end-exec                                              
                    
    c                   
    Eval      *inlr = *On 
    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. SQLRPG Debug
    By olbe in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 24-07-07, 15:48
  2. SQLRPG
    By muadeep in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 28-06-05, 14:17
  3. SQLRPG Angabe LIB als Paramater
    By procher in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 24-01-03, 17:59
  4. Dateifreigabe bei SQLRPG
    By Wiezorek in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 16-10-01, 13:03
  5. SQLRPG
    By Ursus in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 13-08-01, 08:05

Berechtigungen

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