LIMIT
n
|
Dieser Abschnitt 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.
Syntax-Element-Beschreibung:
** 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