kursor PL/SQL dla instrukcji LOOP
Podsumowanie: w tym samouczku dowiesz się, jak używać kursora PL/SQL FOR LOOP
do pobierania i przetwarzania każdego rekordu z kursora.
Wprowadzenie do PL/SQL kursor dla instrukcji LOOP
kursorFOR LOOP
jest eleganckim rozszerzeniem instrukcji numerycznejFOR LOOP
.
LiczbaFOR LOOP
wykonuje ciało pętli raz dla każdej wartości całkowitej w określonym zakresie., Podobnie, kursor FOR LOOP
wykonuje ciało pętli raz dla każdego wiersza zwracanego przez zapytanie powiązane z kursorem.
miłą cechą kursoraFOR LOOP
jest to, że pozwala On pobrać każdy wiersz z kursora bez ręcznego zarządzania cyklem wykonywania, tj.OPEN
,FETCH
ICLOSE
.
kursorFOR LOOP
domyślnie tworzy indeks pętli jako zmienną rekordową z typem wiersza, w którym kursor powraca, a następnie otwiera kursor.,
w każdej iteracji pętli kursorFOR LOOP
pobiera wiersz z ustawionego wyniku do indeksu pętli. Jeśli nie ma wiersza do pobrania, kursorFOR LOOP
zamyka kursor.
kursor jest również zamykany, jeśli instrukcja wewnątrz pętli przenosi sterowanie poza pętlę, np. EXIT
I GOTO
, lub podnosi wyjątek.,
poniższe ilustruje składnię kursora FOR LOOP
polecenie:
1) rekord
record
jest nazwą indeksu, który kursor FOR LOOP
oświadczenie deklaruje domyślnie jako %ROWTYPE
zmienną rekordową typu kursora.
zmiennarecord
jest lokalna dla polecenia kursoraFOR LOOP
. Oznacza to, że można odwoływać się do niego tylko wewnątrz pętli, a nie na zewnątrz., Po zakończeniu wykonywania polecenia FOR LOOP
zmienna record
staje się niezdefiniowana.
2) cursor_name
cursor_name
jest nazwą jawnego kursora, który nie jest otwarty podczas uruchamiania pętli.
zauważ, że oprócz nazwy kursora, możesz użyćSELECT
instrukcji, jak pokazano poniżej:
w tym przypadku kursorFOR LOOP
deklaruje, otwiera, pobiera i zamyka Ukryty kursor., Jednak ukryty kursor jest wewnętrzny, dlatego nie można się do niego odwoływać.
zauważ, że baza danych Oracle automatycznie optymalizuje kursorFOR LOOP
tak, aby działał podobnie do zapytaniaBULK COLLECT
. Chociaż kod wygląda tak, jakby pobierał jeden wiersz na raz, Oracle Database pobiera wiele wierszy naraz i umożliwia przetwarzanie każdego wiersza z osobna.
kursor PL/SQL dla przykładów pętli
przyjrzyjmy się przykładom użycia kursoraFOR LOOP
aby zobaczyć, jak to działa.,
a) kursor PL/SQL dla pętli przykład
poniższy przykład deklaruje jawny kursor i używa go w instrukcji kursor FOR LOOP
.
w tym przykładzie SELECT
polecenie kursora pobiera dane z tabeli products
. InstrukcjaFOR LOOP
otwierała, pobierała każdy wiersz w zestawie wyników, wyświetlała informacje o produkcie i zamykała kursor.,
B) kursor dla pętli z instrukcją SELECT przykład
poniższy przykład jest odpowiednikiem powyższego przykładu, ale używa zapytania w instrukcji kursoraFOR LOOP
.
w tym samouczku nauczyłeś się używać kursora PL/SQL FOR LOOP
do pobierania danych z kursora.
- czy ten tutorial był pomocny?
- YesNo