[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2003
    Beiträge
    192

    SQL Sensitiver Cursor Probleme

    Hi,

    Habe folgendes Problem:

    Ein einwandfrei funktionierendes Programm läuft (ohne dass jemand was geändert hat) nicht mehr.

    Fehlermeldung beim OPEN des Cursors:

    SQLCOD -243 =
    Nachricht . . . : Als SENSITIVE definierter Cursor &1 kann für die
    angegebene Anweisung SELECT nicht definiert werden.
    Ursache . . . . : Der Cursor &1 ist als SENSITIVE definiert, für die Abfrage
    muss jedoch eine temporäre Ergebnistabelle erstellt werden. Ein als
    SENSITIVE defineirter Cursor kann nicht implementiert werden.
    Fehlerbeseitigung: Den Cursor als ASENSITIVE oder INSENSITIVE neu definieren
    oder die Abfrage so ändern, dass die Erstellung einer temporären
    Ergebnistabelle nicht mehr erforderlich ist.

    ---------------
    SQL Statement:
    DECLARE C2 DYNAMIC SCROLL CURSOR FOR
    SELECT ZSCSCD, KOFAHR, CHSTR, KOFLNR, KOLFS,
    DECIMAL(COUNT(*), 7, 0)
    FROM MM4N4LIB/INTZCH
    INNER JOIN TBLZSC ON CHSTR = ZSCSTR
    INNER JOIN TBLZKO ON CHSTR = STRNUM
    WHERE
    ZSCSCD = :TOUR
    AND CHVC = :$TRNUM
    AND CHSTS = 1
    AND CHSTR NOT IN
    (SELECT CHSTR FROM MM4N4LIB/INTZCH WHERE CHSTS = 2)
    GROUP BY ZSCSCD, KOFAHR, CHSTR, KOFLNR, KOLFS
    ORDER BY ZSCSCD, KOFAHR, CHSTR, KOFLNR, KOLFS
    -------------------------
    Interaktiv funktioniert das SQL natürlich normal

    Ich lese da mal folgendes heraus:
    Bei meinem SCROLL Cursor kann ich keinen temporären Index mehr erstellen.

    Hat von euch schon mal jemand dieses Problem gehabt ?

    Haben das Problem natürlich bei mehreren SQL Programmen, die mit Scroll Cursor laufen. Bewusstes PTF einspielen hat nicht stattgefunden, ebensowenig ein IPL.

    HIILFEEEE

    Rince

  2. #2
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    Hallo,

    interaktiv gibt es das Problem der Cursor sensitivity nicht, hast du mal PRTSQLINF und die Erstellungsdatümer abgeprüft? ist das Problem User dependent?

    mfg

    Dieter Bender

    Zitat Zitat von Rincewind
    Hi,

    Habe folgendes Problem:

    Ein einwandfrei funktionierendes Programm läuft (ohne dass jemand was geändert hat) nicht mehr.

    Fehlermeldung beim OPEN des Cursors:

    SQLCOD -243 =
    Nachricht . . . : Als SENSITIVE definierter Cursor &1 kann für die
    angegebene Anweisung SELECT nicht definiert werden.
    Ursache . . . . : Der Cursor &1 ist als SENSITIVE definiert, für die Abfrage
    muss jedoch eine temporäre Ergebnistabelle erstellt werden. Ein als
    SENSITIVE defineirter Cursor kann nicht implementiert werden.
    Fehlerbeseitigung: Den Cursor als ASENSITIVE oder INSENSITIVE neu definieren
    oder die Abfrage so ändern, dass die Erstellung einer temporären
    Ergebnistabelle nicht mehr erforderlich ist.

    ---------------
    SQL Statement:
    DECLARE C2 DYNAMIC SCROLL CURSOR FOR
    SELECT ZSCSCD, KOFAHR, CHSTR, KOFLNR, KOLFS,
    DECIMAL(COUNT(*), 7, 0)
    FROM MM4N4LIB/INTZCH
    INNER JOIN TBLZSC ON CHSTR = ZSCSTR
    INNER JOIN TBLZKO ON CHSTR = STRNUM
    WHERE
    ZSCSCD = :TOUR
    AND CHVC = :$TRNUM
    AND CHSTS = 1
    AND CHSTR NOT IN
    (SELECT CHSTR FROM MM4N4LIB/INTZCH WHERE CHSTS = 2)
    GROUP BY ZSCSCD, KOFAHR, CHSTR, KOFLNR, KOLFS
    ORDER BY ZSCSCD, KOFAHR, CHSTR, KOFLNR, KOLFS
    -------------------------
    Interaktiv funktioniert das SQL natürlich normal

    Ich lese da mal folgendes heraus:
    Bei meinem SCROLL Cursor kann ich keinen temporären Index mehr erstellen.

    Hat von euch schon mal jemand dieses Problem gehabt ?

    Haben das Problem natürlich bei mehreren SQL Programmen, die mit Scroll Cursor laufen. Bewusstes PTF einspielen hat nicht stattgefunden, ebensowenig ein IPL.

    HIILFEEEE

    Rince
    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
    Oct 2003
    Beiträge
    192
    Hi,

    Dank schneller PMR Hilfe habe ich die Lösung:

    Seit V5R3M0 muss man statt dem DYNAMIC Scroll von V5R2
    jetzt ASENSITIVE SCROLL definieren.

    Zu finden in den Benutzeranmerkungen der Releasedokumentation.


    3.44.3 DYNAMIC keyword handled as if SENSITIVE DYNAMIC has been
    specified

    For V5R3, the sensitivity and scrollability attributes that can be
    specified in DECLARE CURSOR and in the ATTRIBUTES clause are being
    expanded to more closely match what other DB2 UDB platforms support.
    This change exposed an incompatibility between what is done on the
    iSeries and what is specified in the SQL standard.

    In releases prior to V5R3, the DYNAMIC keyword modified a scrollability
    option, and indicated that a scrollable cursor can be used for updates.
    In the SQL standard the DYNAMIC keyword modifies a sensitivity option.

    For V5R3, the DYNAMIC keyword will be handled as if SENSITIVE DYNAMIC
    had been specified. For existing applications that specify DYNAMIC
    SCROLL, this will have the desired effect of specifying a scrollable
    cursor that can be used for updates.

    These changes will cause the following compile-time and runtime
    differences in V5R3:

    * The syntax INSENSITIVE DYNAMIC SCROLL will not be allowed in V5R3.
    The SQL precompiler will signal an error at compile time.
    * A cursor declared as DYNAMIC SCROLL in V5R2 is ASENSITIVE. In V5R3,
    it will be SENSITIVE. The difference between the two is that an error
    is signaled for a SENSITIVE cursor if a sensitive cursor cannot be
    implemented. For an ASENSITIVE cursor, an insensitive cursor is
    implemented and no error is signaled.
    * If a cursor was created in a prior release declared as DYNAMIC SCROLL
    and the query implementation would require the creation of a
    temporary result table, a runtime error will be signaled. Conditions
    that require the creation of a temporary result table are listed in
    messages CPI4324 and CPI4325 in message file QCPFMSG.



    Wann ist eigentlich endlich Freitag ?

    Rince

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.873
    Wenn Du DYNAMIC weggelassen hättest, hättest Du weder unter V5R2 noch unter V5R3 Probleme bekommen.

    Dynamic bewirkt, dass keine temporären Objekte (Ergebnistabellen keine temporären Indices) gebildet werden, sondern immer auf den echten Tabellen mit den echten Daten gearbeitet wird. Die Arbeit mit LIVE-Daten ist erforderlich, wenn der Cursor upgedatet werden soll. Da Du jedoch mehrere Dateien miteinander verbindest, kann der Cursor nie upgedated werden, also sind auch keine LIVE-Daten erforderlich.

    Im Umkehrschluss heißt das:
    Dynamic muss nur dann in Verbindung mit einem Scroll Cursor angegeben werden, wenn die Ergebnissätze fortgeschrieben werden sollen, also irgendwo im Programm ein Update oder Delete mit WHERE CURRENT OF Cursor angegeben wurde.

    Die Angabe von ASENSITIVE bewirkt, dass je nach dem wie das SQL-Statement optimiert der Cursor entweder SENSITIVE (basierend auf LIVE-Daten) oder INSENSITIVE (temporäre Ergebnistabellen werden erstellt) geöffnet wird.

    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

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... soll das jetzt heißen, dass ihr einen Releasewechsel ohne IPL hinbekommen habt??? Respekt, Respekt!!!

    Zitat Zitat von Rincewind
    Hi,

    Ein einwandfrei funktionierendes Programm läuft (ohne dass jemand was geändert hat) nicht mehr.

    Haben das Problem natürlich bei mehreren SQL Programmen, die mit Scroll Cursor laufen. Bewusstes PTF einspielen hat nicht stattgefunden, ebensowenig ein IPL.

    Dank schneller PMR Hilfe habe ich die Lösung:

    Seit V5R3M0 muss man statt dem DYNAMIC Scroll von V5R2
    jetzt ASENSITIVE SCROLL definieren.

    Wann ist eigentlich endlich Freitag ?

    Rince
    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
    Oct 2003
    Beiträge
    192
    Wie so oft wurde der Update Teil dieses einen Cursors im laufe der Entwicklung entfernt

    @Bender
    Wir sind eben unschlagbar ^^

    @Realität: Nein wir haben das Programm nur nie gewandelt nach Releasewechsel (bis eben letzte Woche). Anscheinend hat der Releasewechsel das Objekt auch nicht "umgestellt". Was ja an sich positiv ist, da das Objekt nun nicht mehr funktionierte.... mir aber grundsätzlich zu denken gibt was die Aktualität mancher Programme angeht die wir seit Jahren nicht gewandelt haben....



    Rince

    P.s. Zusätzlich wollten wir ursprünglich mit dem Dynamic vermutlich erreichen, dass die Leute immer die sich stetig verändernden Livedaten im Zugriff haben statt den Daten die sie in einer temporären Ergebnistabelle eventuell noch haben

    Wie dem auch sei... mein Tag ist nun entspannter :-)

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

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