2016-04-22 10 views
0

Ich versuche Datensatz von der Datenbank Teil für Teil zu holen. Ich habe versucht, Limit und fetch zu verwenden, aber es scheint, als ob es nicht funktioniert mit Oracle 11g. Gibt es eine alternative Lösung dafür? Ich habe viele in Google-Ergebnissen versucht, aber nichts funktioniert richtig.Oracle 11g holen Werte mit Offset-Wert

Antwort

1

Sie können diese Abfrage verwenden und tun, was Sie wollen.

SELECT A.* 
    FROM (SELECT A.*, ROWNUM ROWNUMBER 
      FROM Table1 T 
     WHERE ROWNUM <= TO) T 
    WHERE ROWNUMBER > FROM; 

FROM ist, aus der Anzahl und TO, auf die Zahl

+0

Können Sie den Grund für die Verwendung von ROWNUM ROWNUMBER erklären? Ich habe versucht mit numrows> und numrows Bhugy

+0

ROWNUM bedeutet Zeilenanzahl der inneren Abfrage. Mit create ROWNUMBER können Sie die Zeilenanzahl an die äußere Abfrage übergeben. Sie können den Namen von ROWNUMBER beliebig ändern. –

+0

Danke @sandun chathuranga. – Bhugy

1

A Sound-Anwendung auf Sounddesign basiert. Bitte überprüfen Sie, ob Sie versuchen, eine Verfahrensanforderung mit einem SQL zu erreichen. Wenn ja, ist es besser, PL/SQL anstelle von SQL zu verwenden.

  1. Erstellen Sie einen Cursor mit dem erforderlichen SQL ohne Einschränkungen.
  2. Erstellen Sie einen Typ eines assoziativen Arrays, das die Batch-Datensätze enthält.
  3. Erstellen Sie ein assoziatives Array mit dem oben erstellten Typ
  4. Öffnen und Schleifen Sie den Cursor. FETCH created_cursor BULK COLLECT IN created_associated_array LIMIT;

Hoffe, das hilft.