PL / SQL Cursor voor LOOP
samenvatting: in deze tutorial leert u hoe u de PL/SQL cursor FOR LOOP
statement gebruikt om elke record van een cursor op te halen en te verwerken.
Introduction to PL / SQL cursor FOR LOOP statement
de cursor FOR LOOP
statement is een elegante uitbreiding van de numerieke FOR LOOP
statement.
De numerieke FOR LOOP
voert het lichaam van een lus eenmaal uit voor elke integer waarde in een opgegeven bereik., Evenzo voert de cursor FOR LOOP
de body van de lus eenmaal uit voor elke rij die wordt geretourneerd door de query die aan de cursor is gekoppeld.
een mooie eigenschap van de cursor FOR LOOP
statement is dat het u toestaat om elke rij van een cursor op te halen zonder de uitvoercyclus handmatig te beheren, d.w.z. OPEN
, FETCH
, en CLOSE
.
de cursor FOR LOOP
maakt impliciet zijn lus-index aan als een recordvariabele met het rijtype waarin de cursor terugkeert en dan de cursor opent.,
in elke lus iteratie, haalt de cursor FOR LOOP
statement een rij van het resultaat in zijn lus index. Als er geen rij moet worden opgehaald, sluit de cursor FOR LOOP
de cursor.
de cursor is ook gesloten als een statement binnen de lus controle buiten de lus overdraagt, bijvoorbeeld EXIT
en GOTO
, of een uitzondering opwerpt.,
Het volgende voorbeeld illustreert de syntaxis van de cursor FOR LOOP
verklaring:
1) record
De record
is de naam van de index die de cursor FOR LOOP
verklaring verklaart impliciet als een %ROWTYPE
record variabele van het type van de cursor.
derecord
variabele is lokaal tot de cursorFOR LOOP
statement. Het betekent dat je het alleen binnen de lus kunt verwijzen, niet buiten., Nadat de cursor FOR LOOP
de uitvoering van het statement eindigt, wordt de variabele record
niet gedefinieerd.
2) cursor_name
de cursor_name
is de naam van een expliciete cursor die niet wordt geopend wanneer de lus begint.
merk op dat u naast de cursor naam een SELECT
statement kunt gebruiken zoals hieronder getoond:
In dit geval declareert, opent, haalt van en sluit de cursor een impliciete cursor., De impliciete cursor is echter intern; daarom kun je er niet naar verwijzen.
merk op dat Oracle Database automatisch een cursor FOR LOOP
optimaliseert om op dezelfde manier te werken als een BULK COLLECT
query. Hoewel uw code eruit ziet alsof het een rij tegelijk ophaalt, haalt Oracle Database meerdere rijen tegelijk op en kunt u elke rij afzonderlijk verwerken.
PL/SQL cursor voor LUSVOORBEELDEN
laten we eens kijken naar enkele voorbeelden van het gebruik van de cursor FOR LOOP
statement om te zien hoe het werkt.,
A) PL/SQL cursor voor lus voorbeeld
het volgende voorbeeld verklaart een expliciete cursor en gebruikt het in de cursor FOR LOOP
statement.
in dit voorbeeld haalt het SELECT
statement van de cursor gegevens op uit de products
tabel. HetFOR LOOP
statement is geopend, elke rij in de resultatenreeks opgehaald, de productinformatie weergegeven en de cursor gesloten.,
B) Cursor voor lus met een SELECT statement voorbeeld
het volgende voorbeeld is gelijk aan het bovenstaande voorbeeld, maar gebruikt een query in een cursor FOR LOOP
statement.
in deze tutorial hebt u geleerd hoe u de PL/SQL cursor FOR LOOP
gebruikt om gegevens van een cursor op te halen.
- Was deze tutorial nuttig?
- YesNo