LIMIT n
|
Dieses Dokument behandelt folgende Themen:
Verwandte Statements: ACCEPT/REJECT | AT BREAK | AT START OF DATA | AT END OF DATA | BACKOUT TRANSACTION | BEFORE BREAK PROCESSING | DELETE | END TRANSACTION | FIND | GET | GET SAME | GET TRANSACTION | HISTOGRAM | PASSW | PERFORM BREAK PROCESSING | READ | RETRY | STORE | UPDATE
Gehört zur Funktionsgruppe: Datenbankzugriffe und Datenbankänderungen
Das Statement LIMIT
dient dazu, die Anzahl der Durchläufe
einer Verarbeitungsschleife, die mit einem FIND
-, READ
- oder
HISTOGRAM
-Statement
initiiert wurde, zu begrenzen.
Das festgesetzte Limit gilt für alle nachfolgenden
Verarbeitungsschleifen des Programms, bis es durch ein weiteres
LIMIT
-Statement außer Kraft gesetzt wird.
Das LIMIT
-Statement gilt nicht für einzelne Statements, in
denen ausdrücklich ein anderes Limit angegeben ist, zum Beispiel
FIND (n)
...
.
Wenn das Limit erreicht ist, wird die Verarbeitung der betreffenden
Schleife abgebrochen und eine entsprechende Meldung ausgegeben. Siehe auch
Session-Parameter LE
, der die Reaktion
darauf festlegt, wann das Limit für die Verarbeitungsschleife überschritten
wird.
Wird kein LIMIT
-Statement verwendet, so gilt standardmäßig
das mit dem Natural- Profilparameter LT
bei der
Natural-Installation festgesetzte globale Limit.
Um zu ermitteln, ob eine Verarbeitungsschleife das Limit erreicht hat, wird jeder mit der Schleife gelesene Datensatz gezählt; hierbei gilt:
Ein Datensatz, der aufgrund der WHERE
-Bedingung eines
FIND
- oder
READ
-Statements
zurückgewiesen wird, wird nicht mitgezählt.
Ein Datensatz, der aufgrund eines ACCEPT
/REJECT
-Statements
zurückgewiesen wird, wird mitgezählt.
** Example 'LMTEX1': LIMIT ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 PERSONNEL-ID 2 NAME 2 CITY END-DEFINE * LIMIT 4 * READ EMPLOY-VIEW BY NAME STARTING FROM 'BAKER' DISPLAY NOTITLE NAME PERSONNEL-ID CITY *COUNTER END-READ * END
Ausgabe des Programms LMTEX1
:
NAME PERSONNEL CITY CNT ID -------------------- --------- -------------------- ----------- BAKER 20016700 OAK BROOK 1 BAKER 30008042 DERBY 2 BALBIN 60000110 BARCELONA 3 BALL 30021845 DERBY 4
** Example 'LMTEX2': LIMIT (valid for two database loops) ************************************************************************ DEFINE DATA LOCAL 1 EMPLOY-VIEW VIEW OF EMPLOYEES 2 NAME END-DEFINE * LIMIT 3 * FIND EMPLOY-VIEW WITH NAME > 'A' READ EMPLOY-VIEW BY NAME STARTING FROM 'BAKER' DISPLAY NOTITLE 'CNT(0100)' *COUNTER(0100) 'CNT(0110)' *COUNTER(0110) END-READ END-FIND * END
Ausgabe des Programms LMTEX2
:
CNT(0100) CNT(0110) ----------- ----------- 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3