Kursor pętli jest rozszerzeniem pętli dla PL/SQL i umożliwia wykonanie bloku kodu dla każdego wiersza w uzyskanym zestawie. Jest to bardzo przydatne, ponieważ pozwala szybko i wydajnie wykonywać obszerne obliczenia w jednym obliczeniach bez ładowania danych do pamięci.
Oracle Kursor dla pętli
Pętla For pobiera wiersz z uzyskanego zestawu w indeksie pętli dla każdej iteracji. Jeśli nie ma wiersza, pętla zamyka kursor.
Poniżej pokazuje podstawową składnię kursora dla pętli w Oracle:
Do zapisu w nazwie cursor
PĘTLA
-- Zastosuj ten blok do każdego wiersza
Pętla końcowa;
W dostarczonej składni rekord reprezentuje nazwę zmiennej, która przedstawiała każdy wiersz w kursorze.
Nazwa_kursor w pętli określa jawny kursor, przez który chcesz zapętlić. Zauważ, że kursor musi być otwarty i pobrany w rekordzie przed użyciem go w kursorze do pętli.
Jeśli nie chcesz tworzyć jawnego kursora, For Loop domyślnie tworzy indeks pętli jako zmienną rekordową %wiersz.
Oracle Kursor dla przykładu pętli
Spójrzmy na podstawowe przykłady kursora dla pętli w bazach danych Oracle.
ogłosić
Cursor emp_cursor jest
Wybierz nazwę pierwszej nazwy, Last_name
od pracowników;
zaczynać
dla pracownika w EMP_Cursor
pętla
Dbms_output.Put_line (pracownik.First_name || „|| Pracownik.nazwisko);
Pętla końcowa;
koniec;
W dostarczonym kodzie deklarujemy kursor o nazwie emp_cursor. Następnie wypełniamy ten kursor z danych z tabeli pracowników za pomocą kolumn pierwszej nazwy_nazwy i last_name.
Następnie używamy kursora do pobierania i przetwarzania danych w każdym wierszu z zestawu wyników. Zauważ, że zmienna pracownika przechowuje każdy wiersz w EMP_Cursor.
Pętla łączy kolumny pierwszej nazwy_name i last_name i drukuje wynik za pomocą DBMS_OUTPUT.Funkcja Put_Line.
Silnik bazy danych automatycznie zamyka kursor po zakończeniu pętli.
Powinno to zwrócić następujące wyniki, pokazując, w jaki sposób możemy użyć jawnej definicji kursora do przetwarzania danych z tabeli:
Oracle Implicit Cursor
Jeśli nie chcesz tworzyć jawnego kursora, możesz pozwolić silnikowi bazy danych na utworzenie jednego i zarządzanie nim, pomijając nazwę kursora, jak pokazano następująco:
ZACZYNAĆ
Dla pracownika (wybierz nazwę pierwszej, nazwa last_name
Od pracowników) pętla
Dbms_output.Put_line (pracownik.First_name || „|| Pracownik.nazwisko);
Pętla końcowa;
KONIEC;
Powinno to zwrócić podobny wynik jako jawny kursor.
Wniosek
W tym poście natknąłeś się na kursor dla pętli w bazach danych Oracle, aby pobrać i przetworzyć każdy wiersz z zestawu wyników.