Announcement

Collapse
No announcement yet.

LIMIT-Funktion zur Begrenzung der Abfrage wie bei MySQL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • LIMIT-Funktion zur Begrenzung der Abfrage wie bei MySQL

    Hallo,

    ich arbeite an einem Delphi-Projekt zur Darstellung eines Kataloges im Internet. Als Datenbank benutze ich InterBase 6.

    Aufgrund der Datenstruktur kann ich nicht gewährleisten, das bei Anwahl einer Warengruppe nur eine im Internet vertretbare Anzahl Artikel zurückgeliefert wird. Daher muss ich auf z. B. 100 Artikel je Abfrage begrenzen.

    MySQL bietet dafür den Zusatz "limit" zur select-Abfrage, mit dem die Rückgabe begrenzt werden kann. Gleichzeitig habe ich hier auch die Möglichkeit einen Offset (z. b. 100 Datensätze ab Datensatz 2001) zu definieren. Die Rückgabe erfolgt sehr schnell.

    Kann ich diese Limit-Funktion im InterBase (z. B. mit einer Stored Procedure) nachbilden. Wenn ich dies Client-seitig begrenze, habe ich bei einem hohen Offset eine schöne Kaffeepause.

    Vielen Dank,
    Gruß, Frank!

  • #2
    Hallo,

    die im Beispiel gezeigte Stored Procedure liefert nur die ersten <i>X</i> Datensätze zurück, wobei die Anzahl der zurückzuliefernden Datesätze als Parameter übergeben wird:

    SELECT * FROM GetFirstXKunden(10)

    <pre>
    CREATE PROCEDURE GetFirstXKunden (rows INTEGER)
    RETURNS (kundenid INTEGER, vorname CHAR(35), nachname CHAR(35)) AS
    BEGIN
    IF (rows <1) THEN EXIT;
    FOR SELECT kundenid, vorname, nachname
    FROM kundenimp
    INTO :kundenid, :vorname, :nachname
    DO
    BEGIN
    SUSPEND;
    rows = rows -1;
    IF (rows <1) THEN EXIT;
    END
    END
    ^
    </pre&gt

    Comment

    Working...
    X