BD-1st-2.4-lab12.tresc-1.1-Slajd11
Atrybuty kursora (2)
Przykład zaprezentowany na bieżącym slajdzie pokazuje sposób wykorzystania atrybutów kursora.
W przykładzie zadeklarowano kursor cur_zespoly i zmienną rekordową v_zespol. Na początku programu sprawdzamy, czy kursor nie został już otwarty, odczytując wartość atrybutu %ISOPEN. Jeśli wartość atrybutu to FALSE, otwieramy kursor poleceniem OPEN.
Następnie rozpoczynamy pętlę LOOP, w której będziemy po kolei pobierać rekordy z kursora. Pierwsze polecenie wewnątrz pętli pobiera rekord z kursora i umieszcza wartości atrybutów rekordu w zmiennej rekordowej v_zespol. Dalej sprawdzany jest warunek wyjścia z pętli. Kończymy pętlę w momencie, gdy wartość atrybutu %NOTFOUND kursora jest równa TRUE, czyli wtedy, gdy wcześniejsze polecenie FETCH nie odczytało żadnego rekordu (czyli albo kursor nie odczytał żadnych rekordów z bazy danych albo wskaźnik bieżącego rekordu znajduje się poza ostatnim rekordem ze zbioru, czyli zostały odczytane już wszystkie rekordy kursora). Jeśli atrybut %NOTFOUND ma wartość FALSE, wówczas kontynuujemy pętlę, wypisując na konsoli liczbę pobranych dotąd rekordów z kursora (wartość atrybutu %ROWCOUNT, która tutaj jest wykorzystywana jako liczba porządkowa kolejnych rekordów) i nazwę zespołu z bieżącego rekordu kursora.
Po zakończeniu pętli kursor zostaje zamknięty poleceniem CLOSE
Zaprezentowany przykład pokazuje typową konstrukcję pętli LOOP z kursorem.