[NEWSboard IBMi Forum]

Thema: DB2 Limit

  1. #1
    Registriert seit
    Aug 2007
    Beiträge
    15

    DB2 Limit

    Hallo,

    vor einiger zeit habe ich schonmal ein Thema dazu erstellt: http://www.newsolutions.de/forum-sys...db2-limit.html

    Nun habe ich auf V5R4 geupdatet. ROW_NUMBER() müsste also eigentlich funktionieren...
    das ist mein SQL-Befehl:
    Code:
    WITH x as (SELECT "TABELLE".*, ROW_NUMBER() Over (Order By "SPALTE") as Zeilennummer From "TABELLE") SELECT * FROM x
    Als meldung bekomme ich da aber
    Code:
     Funktion nicht für die Abfrage unterstützt.
    was mache ich da falsch?

    gruß

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

    vermutlich muss das SQL-Statement von der CQE (classic query engine) ausgeführt werden.
    Die OLAP-Ranking Funktionen können nur von der SQE (SQL Query Engine) ausgeführt werden.

    Versuche Deine Abfrage ohne die RowNumber() über den iSeries Navigator (Eine SQL Prozedur ausführen) auszufüheren und mit Visual Explain analysieren.

    Im Visual Explain siehst Du rechts unten, welche Query Engine die Abfrage ausführt und falls es die CQE ist, auch warum die SQE nicht verwendet werden konnte.

    Versuche die Ursache zu beheben und die gleiche Abfrage mit der SQE ausführen.

    Außerdem ist Dein Befehl (oben) nicht komplett. Es fehlt das endgültige Select-Statement (aber vielleicht ist das nur ein Kopierfehler);


    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

  3. #3
    Registriert seit
    Aug 2007
    Beiträge
    15
    hallo,

    ich habe genau das gemacht was du gesagt hast... jedoch habe ich nicht rausfinden können ob der Befehl mit der CQE ider SQE ausgeführt wurde.

    wenn ich "VisualExplain->Ausführen und Erklären" kommt folgende fehlermeldung:
    Code:
    SQL-Status: 42999
    Vendorencode: -255
    Nachricht: [SQL0255] Funktion nicht für die Abfrage unterstützt. Ursache  . . . .
     :  Der Ursachencode ist 6: 
    -- Code 1 -- Skalare Unterauswahl und laterale Korrelation aus einem verschachtelten Tabellenausdruck sind für verteilte Dateien nicht zulässig. 
    -- Code 2 -- Beim Verwenden einer temporären verteilten Datei ist ein Fehler aufgetreten. 
    -- Code 3 -- EXCEPT oder INTERSECT wird für diese Abfrage nicht unterstützt.
    -- Code 4 -- Ein Sequenzverweis wird bei verteilten Dateien nicht unterstützt. 
    -- Code 5 -- Ein rekursiver allgemeiner Tabellenausdruck wird für diese Abfrage nicht unterstützt. 
    -- Code 6 -- Eine OLAP-Funktion wird für diese Abfrage nicht unterstützt. 
    -- Code 7 -- ORDER OF wird für diese Abfrage nicht unterstützt. 
    -- Code 8 -- Skalare Gesamtauswahl wird für diese Abfrage nicht unterstützt. 
    -- Code 9 -- Eine verteilte Datei wird in einem multithread-fähigen Job verarbeitet, oder dies ist nicht der anfängliche Thread. Fehlerbeseitigung:  Eine Liste der Maßnahmen zur Fehlerbeseitigung folgt: 
    -- Bei Code 1 die Abfrage so ändern, dass sie weder skalare Unterauswahl noch Korrelation aus einem verschachtelten Tabellenausdruck verwendet. 
    -- Bei Code 2 die vorherigen Nachrichten auf weitere Informationen prüfen. 
    -- Bei Code 3 EXCEPT oder INTERSECT aus der Abfrage entfernen. 
    -- Bei Code 4 den Sequenzverweis aus der Abfrage entfernen. 
    -- Bei Code 5 den rekursiven allgemeinen Tabellenausdruck aus der Abfrage entfernen. 
    -- Bei Code 6 die OLAP-Funktion aus der Abfrage entfernen. 
    -- Bei Code 7 ORDER OF aus der Abfrage entfernen. 
    -- Bei Code 8 die Abfrage ohne Gesamtauswahl erneut angeben. 
    -- Bei Code 9 nicht mehrere Threads für die Ausführung der Abfrage verwenden.
    
    Verarbeitung wurde beendet, da die hervorgehobene Anweisung nicht erfolgreich abgeschlossen werden konnte
    mein SQL-befehl ist der:
    Code:
    WITH x as (SELECT a.*, ROW_NUMBER() Over (Order By "SPALTE") as Zeilennummer 
    From "BIBLIOTHEK"."TABELLE" a)
     SELECT * FROM x
    Die Syntaxprüfung ist erfolgreich.

    Wie kann ich weiter vorgehen um das zum laufen zu bringen?

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    Du musst die Abfrage "OHNE" RowNumber ausführen (siehe meine vorige Antwort bzw. Joblog)!

    Ein Routing zur CQE kann mehrere Ursachen haben!
    z.B. auf der phyischen Datei liegen logische Dateien mit Select/Omit-Anweisungen oder CCSID-Konvertierungen sind erforderlich.

    Deshalb solltest Du die Abfrage Ohne die RowNumber() ausführen, damit man die Ursache, warum die CQE verwendet wurde feststellen kann und dann entsprechend reagieren kann.

    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

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    Hallo,

    in der SQL Reference sind die Einschränkungen klar dokumentiert (kein read Trigge, keine Multi Member LFs, keine CCSID Conversion, kein ORDER BY etc...) wenn die nicht zutreffen liegt meines Erachtens ein Bug vor, den man an IBM reporten sollte.

    mfg

    Dieter Bender

    Zitat Zitat von h-net Beitrag anzeigen
    hallo,

    ich habe genau das gemacht was du gesagt hast... jedoch habe ich nicht rausfinden können ob der Befehl mit der CQE ider SQE ausgeführt wurde.

    wenn ich "VisualExplain->Ausführen und Erklären" kommt folgende fehlermeldung:
    Code:
    SQL-Status: 42999
    Vendorencode: -255
    Nachricht: [SQL0255] Funktion nicht für die Abfrage unterstützt. Ursache  . . . .
     :  Der Ursachencode ist 6: 
    -- Code 1 -- Skalare Unterauswahl und laterale Korrelation aus einem verschachtelten Tabellenausdruck sind für verteilte Dateien nicht zulässig. 
    -- Code 2 -- Beim Verwenden einer temporären verteilten Datei ist ein Fehler aufgetreten. 
    -- Code 3 -- EXCEPT oder INTERSECT wird für diese Abfrage nicht unterstützt.
    -- Code 4 -- Ein Sequenzverweis wird bei verteilten Dateien nicht unterstützt. 
    -- Code 5 -- Ein rekursiver allgemeiner Tabellenausdruck wird für diese Abfrage nicht unterstützt. 
    -- Code 6 -- Eine OLAP-Funktion wird für diese Abfrage nicht unterstützt. 
    -- Code 7 -- ORDER OF wird für diese Abfrage nicht unterstützt. 
    -- Code 8 -- Skalare Gesamtauswahl wird für diese Abfrage nicht unterstützt. 
    -- Code 9 -- Eine verteilte Datei wird in einem multithread-fähigen Job verarbeitet, oder dies ist nicht der anfängliche Thread. Fehlerbeseitigung:  Eine Liste der Maßnahmen zur Fehlerbeseitigung folgt: 
    -- Bei Code 1 die Abfrage so ändern, dass sie weder skalare Unterauswahl noch Korrelation aus einem verschachtelten Tabellenausdruck verwendet. 
    -- Bei Code 2 die vorherigen Nachrichten auf weitere Informationen prüfen. 
    -- Bei Code 3 EXCEPT oder INTERSECT aus der Abfrage entfernen. 
    -- Bei Code 4 den Sequenzverweis aus der Abfrage entfernen. 
    -- Bei Code 5 den rekursiven allgemeinen Tabellenausdruck aus der Abfrage entfernen. 
    -- Bei Code 6 die OLAP-Funktion aus der Abfrage entfernen. 
    -- Bei Code 7 ORDER OF aus der Abfrage entfernen. 
    -- Bei Code 8 die Abfrage ohne Gesamtauswahl erneut angeben. 
    -- Bei Code 9 nicht mehrere Threads für die Ausführung der Abfrage verwenden.
    
    Verarbeitung wurde beendet, da die hervorgehobene Anweisung nicht erfolgreich abgeschlossen werden konnte
    mein SQL-befehl ist der:
    Code:
    WITH x as (SELECT a.*, ROW_NUMBER() Over (Order By "SPALTE") as Zeilennummer 
    From "BIBLIOTHEK"."TABELLE" a)
     SELECT * FROM x
    Die Syntaxprüfung ist erfolgreich.

    Wie kann ich weiter vorgehen um das zum laufen zu bringen?
    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. DB2 Limit
    By h-net in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 15-08-07, 17:27
  2. Problem mit DB2 Connect
    By Ewald in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 24-01-07, 18:32
  3. Zugriff auf DB2 UDB
    By Azaron in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 05-12-06, 13:42
  4. 13.12.06 - DB2 V9 - pureXML, System i5 und CenturioDB
    By mlitters in forum Archiv NEWSboard Events
    Antworten: 0
    Letzter Beitrag: 11-10-06, 16:52
  5. Access -> ODBC-> DB2
    By bluesXplosion in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 03-08-06, 09:52

Berechtigungen

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