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.
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