SQL Query Limit für DB2 AS / 400 Version 4

9

Ich weiß, dass die Version viel zu alt ist (yea Version 4!), aber ich habe keine Wahl.

Wie kann ich meine Abfrage auf 100 Zeilen beschränken, nur für DB2 AS400?

%Vor%

und

%Vor%

funktioniert nicht.

Irgendwelche Ideen oder Workaround?

Hier ist eine Beispiel-SQL-Abfrage (funktioniert nicht):

%Vor%

Es sagt

  

[SQL0199] Schlüsselwort FETCH nicht erwartet. Gültige Token: FÜR MIT ORDER UNION OPTIMIZE.

    
Kevin 10.04.2015, 05:44
quelle

2 Antworten

2

Es gibt keine dbms-Unterstützung für diese Operation, überprüfen Sie Version 4 DB2 UDB für AS / 400-SQL-Referenz : Nein Limit , Top , First , ... reservierte Wörter.

Sie können versuchen, Zeilen über die where-Klausel, where sequence between 100 and 200 , zu begrenzen. Aber das ist ein unwirkliches Szenario.

Die erste Umgehung ist über den Cursor :

%Vor%

Zweitens, in Ihrer Middleware-Sprache .

Ich hoffe, dass jemand einen cleveren Workaround postet, aber meiner Meinung nach nicht.

    
danihp 19.04.2015, 17:09
quelle
0

Lösung nur für & gt; V4R4

Verwenden von FETCH FIRST [n] ROWS ONLY :

%Vor%

Referenz: publib.boulder.ibm.com

Der Unterschied, den ich von Ihrer Abfrage zu diesem Beispiel sehen kann, ist, dass wir hier eine ORDER BY -Klausel verwenden - haben Sie die Möglichkeit, ein ORDER BY hinzuzufügen - sollte es den Trick machen. Verweis auf: Ссылка

Um Bereiche oder auch nur die ersten 10 Zeilen zu erhalten, müssten Sie ROW_NUMBER() (seit v5r4) verwenden:

%Vor%

Referenz: blog.zanclus.com

    
DominikAngerer 18.04.2015 16:39
quelle

Tags und Links