[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Aug 2003
    Beiträge
    44

    Objlck bei ILESQL

    Hallo,

    ich habe da mal wieder ein Problem.
    In einem ILERPG Programm habe ich eine Dateioperation mit ILESQL (Fetch) usw.
    Wenn ich das Programm verlasse habe ich aber immernoch einen Objlck auf die Datei die ich mit SQL verarbeitet habe.

    Habe ich da vieleicht eine Möglichkeit dass ich das ganze explizit mache?? so wie in RPG mit Usercontrol??

    Bin wie immer über jede hilfreiche Antwort dankbar!!!


    Servas

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.350
    Die SQL-Umgebung ist ggf. noch aktiv, sowie dein Programm (Aktivierungsgruppen).
    Schließt du den Cursor ?
    Verläßt du das Programm mit *INLR = *ON ?

    Das Problem ist hier der SQL-Optimizer, der ODP's offenhält um wiederkehrende Zugriffe zu beschleunigen.
    Solange also die Aktivierungsgruppe aktiv bleibt, bleibt auch der ODP offen.

    Lösung: RCLACTGRP
    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
    Aug 2003
    Beiträge
    44

    Unhappy

    Hallo Fuerchau,

    das Programm endet mit *INLR und auch der Cursor wird geschlossen. Ich habe auch schon RCLACTGRP getestet, aber der OBJLCK bleibt auf der Datei.

    Ich habe in der Hilfe was von einem Befehl LOCK TABLE gelesen muss ich den setzten damit bei CLOSE die Datei geschlossen wird?

    Ich hatte mich bislang noch nie so mit SQL auseinandersetzen müssen.

    Danke

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.350
    LOCK TABLE sperrt die gesamte Tabelle gegen Parallelverarbeitung (entspricht dem ALCOBJ ... *EXCL) und ist nicht die Ursache.

    Über DSPJOB Auswahl 18 siehst du, welche Aktivierungsgruppen aktiv sind und über Auswahl 14 siehst du, welche Aktivierungsgruppe die Datei geöffnet hält.

    Ist die Datei nicht in Auswahl 14, wird sie nicht vom SQL gesperrt sondern manuell durch ALCOBJ.

    Fährst du mit Journal und Commit ?
    Dann fehlt ggf. der Commit im Programm (nur nach Update/Delete/Insert).
    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

  5. #5
    Registriert seit
    Aug 2003
    Beiträge
    44
    Ich sehe die Datei mit DSPJOB Auswahl 14 und habe auch schon versucht mit RCLACTGRP die Aktivierungsgruppe zu deaktivieren. Das klappt aber so nicht. Wenn ich den Namen 00000000002 angebe bekomme ich den Hinweis, dass das nicht gültig sei und mit RCLACTGRP *ELIGIBLE wird zwar eine Gruppe gelöscht aber nicht die die meine Datei sperrt.

    Mit DLCOBJ habe ich die Sperre herausbekommen, heißt das dass nicht der SQL schuld ist .

    Wegen deiner Antwort zu COMMIT:
    Ich habe im Programm lediglich eine Leseschleife mit Declare und Fetch, kein Delete, update, oder Insert.


    Über weitere Möglichkeiten wäre ich noch sehr dankbar.

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.890

    Input only

    Hallo,

    1. Verwendest Du die Datei als Input oder Update-Datei?
    Wenn Du die Datei nur als Input verwenden möchtest, füge am Ende deines Declare Statements "For Read Only" hinzu.
    Anderenfalls wird die Datei als immer Update-Datei verarbeitet, wenn bestimmte Bedingungen nicht zutreffen. (z.B. wenn Dateien gejoint werden werden sie als Input-Files behandelt)
    2. Unter welchem Commitent-Level arbeites Du?
    Vielleicht fehlt irgendwo ein Commit

    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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.350
    @Jamikl

    /exec sql set option commit = *none
    /end-exec

    Füge auf jeden Fall obiges als 1. SQL-Anweisung ein.

    Schließt du den Cursor ?

    /exec sql close cursor
    /end-exec

    Wenn nicht ergänze den "set option" mit ", clossqlcsr = *modul"

    In der H-Bestimmung würde ich eine Aktivierungsgruppe benennen:

    h dftactgrp(*none) actgrp(myname)

    Du erstellst beim Aufruf immer eine neue Aktivierungsgruppe. Besser ist es schon, einen Namen zu verwenden. Alle Programme mit dem gleichen Namen laufen dann in derselben und sind auch mit einem einzelnen RCLACTGRP zu deaktivieren.
    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
    Aug 2003
    Beiträge
    44
    @ Fuerchau

    Danke für deinen Lösungsansatz, aber die Antwort von B.Hauser hat mein Problem gelöst.
    Ich wusste ja nicht, dass SQL die Dateien standardmäßig im UpdateModus öffnet.

    @ B.Hauser

    kurze knackige Antwort.....kurze knackige Lösung....kurz gesagt................RESPEKT!!!!


    @ all

    Danke, dass ich euch was von euerer Zeit rauben durfte!!!!

    MFG Jamikl

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.350
    Das kann ich so nicht ganz stehen lassen.

    Wenn ich einen Cursor eröffne dann wird die Datei im Input-Modus eröffnet (über DSPJOB nachzuschauen).
    Wenn ich den Cursor schließe, ist die Datei auch zu !

    Ich kann daher Birgittas Aussage nicht nachvollziehen.

    Um beim Select einen Open im Update-Modus hinzukriegen muss ich schon "for update" kodieren. Dann wird allerdings jeder Satz beim Lesen gesperrt um ggf. "update ... current of ..." zu verwenden.
    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

  10. #10
    Registriert seit
    Aug 2003
    Beiträge
    44
    Da möchte ich dir rechtgeben!!
    Ich habe mitlerweile festgestellt, dass dies an unserem Pre-PreCompiler hängt und ich weiß jetzt noch nicht wer von euch recht hat!
    Es geht ja hier nicht darum wer der bessere ist ODER?????
    Ich melode mich wenn ich das Problem entdeckt habe!!

    schönen Tag noch!!

  11. #11
    Registriert seit
    Feb 2001
    Beiträge
    20.350
    Pre-Precompiler ?

    Poste doch mal das Listing (allerdings die RPG-Umwandlung!).
    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

  12. #12
    Registriert seit
    Aug 2003
    Beiträge
    44
    Menno;

    was meinst du denn mit Listing??? Umwandlungsliste??!!
    Ich meinte natürlich Pre-Compiler(Firmeneigene Copy Strecken)

Similar Threads

  1. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  2. OBJLCK im IFS ???
    By PS in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 02-07-03, 13:27

Berechtigungen

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