Database
 sql >> Baza danych >  >> RDS >> Database

Czym jest kursor w SQL i jak go zaimplementować?

Kursory w SQL stanowią integralną część każdej bazy danych, która w zasadzie pomaga użytkownikowi w poruszaniu się po bazie danych bez większego wysiłku. Za pośrednictwem tego artykułu na temat Cursor w SQL przekażę Ci wszystkie niezbędne szczegóły, których musisz potrzebować, zanim zmoczysz nim stopy.

Poniżej znajdują się tematy, które będę omawiać w tym artykule:

  • Co to jest kursor w SQL?
  • Rodzaje kursorów SQL
  • Składnia kursora SQL
  • Cykl życia kursora

Co to jest kursor w SQL?

Kursor w SQL to obiekt, który umożliwia przechodzenie przez wiersze dowolnego zestawu wyników. Dzięki temu możesz przetwarzać pojedynczy wiersz bazy danych, który jest zwracany przez zapytanie. Jest to tymczasowy obszar roboczy lub obszar kontekstowy, który jest tworzony w systemie pamięci podczas wykonywania instrukcji SQL, który przechowuje dane pobrane z bazy danych i pomaga w ich manipulacji. Można to potraktować jako układ wierszy wraz ze wskaźnikiem wskazującym na obecny wiersz. Kursor to obiekt bazy danych, który może zawierać więcej niż jeden wiersz, ale może przetwarzać tylko jeden wiersz w danym momencie. Zbiór wierszy przechowywanych przez kursory jest znany jako aktywny ustawić. W ten sposób możesz sterować zapisem tabeli w technice singletonowej, tj. jednym wierszem w dowolnym momencie.

Teraz, gdy już wiesz, czym jest kursor w SQL, przejdźmy teraz do przodu i przyjrzyjmy się jego różnym typom.

Typy kursora SQL

SQL udostępnia dwa typy kursorów, które wymieniłem poniżej:

  1. Kursor niejawny

Za każdym razem, gdy operacje DML, takie jak INSERT, UPDATE i DELETE, są przetwarzane w bazie danych, niejawne kursory są generowane automatycznie i używane przez platformę. Tego typu kursory są używane do przetwarzania wewnętrznego i nie można nimi sterować ani odwoływać się do nich z innego obszaru kodu. Niejawne kursory w SQL po prostu zatrzymują wiersze, których dotyczy operacja i mogą odnosić się tylko do najnowszego kursora za pomocą atrybutów kursora, które są pokazane poniżej w tabeli.

Atrybut Opis
%FOUND Zwróci TRUE w przypadku, gdy instrukcja INSERT, UPDATE lub DELETE wpływa na jeden lub więcej wierszy lub instrukcja SELECT INTO zwraca jeden lub więcej wierszy. W innych przypadkach zwróci FALSE.
%NOTFOUND Jest to technicznie przeciwieństwo atrybutu %FOUND. Zwraca TRUE w przypadku, gdy instrukcja INSERT, UPDATE lub DELETE nie wpływa na żadne wiersze lub instrukcja SELECT INTO nie zwraca żadnych wierszy. W przeciwnym razie zwraca tylko FALSE.
%ISOPEN Ten atrybut zawsze zwraca FALSE dla niejawnych kursorów, ponieważ kursor SQL jest automatycznie zamykany natychmiast po wykonaniu powiązanej instrukcji SQL.
%ROWCOUNT Zwraca całkowitą liczbę wierszy, których dotyczy instrukcja INSERT, UPDATE lub DELETE, albo wierszy zwracanych przez instrukcję SELECT INTO.
  1. Wyraźny kursor

Ten typ kursora jest generowany za każdym razem, gdy dane są przetwarzane przez użytkownika za pomocą bloku SQL. Ogólnie rzecz biorąc, użycie zapytania SELECT powoduje utworzenie jawnego kursora i może przechowywać więcej niż jeden wiersz, ale przetwarzać tylko jeden na raz. Ten typ kursora służy do przechowywania rekordów obecnych w kolumnie. Pozwala to programistom na utworzenie nazwanego obszaru kontekstowego do wykonywania operacji DML w celu lepszej kontroli. Ponadto musi być zdefiniowany w bloku SQL, a następnie jest tworzony dla zapytania SELECT przy użyciu tego kodu.

Aby lepiej zrozumieć kursor, zobaczmy teraz, jaka jest składnia kursora w SQL.

Składnia kursora SQL

Poniżej znajduje się ogólna składnia tworzenia wyraźnego kursora.

CURSOR cursorName IS selectStatement;

Tutaj:

cursorName — reprezentuje prawidłową nazwę kursora

selectStatement — reprezentuje zapytanie wybierające, które zwróci wiele wierszy

Przejdźmy teraz dalej z tym artykułem i zobaczmy cykl życia kursora SQL.

Cykl życia kursora

W zasadzie istnieje 5 etapów cyklu życia kursora w SQL, które wymieniłem poniżej:

  1. Zadeklaruj
DECLARE cursorName CURSOR
FOR selectStatement;

Ten krok pomoże ci określić nazwę i typ danych kursora, a instrukcja SELECT zdefiniuje jego zestaw wyników.

  1. Otwórz
OPEN cursorName;

Ten krok pozwoli Ci otworzyć i wypełnić kursor poprzez jego wykonanie.

  1. Pobierz
FETCH NEXT FROM cursor INTO variableList;

Ten krok pobierze wiersz z kursora i zapisze go w jednej lub więcej zmiennych.

[Opcjonalnie] CheckStatus

WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM cursorName;
END;

Ta funkcja zwraca stan ostatniej instrukcji FETCH, która została wykonana względem kursora. Jeśli funkcja ta zwraca 0, oznacza to, że operacja FETCH zakończyła się powodzeniem. Aby pobrać wszystkie wiersze z kursora, używana jest klauzula WHILE.

  1. Zamknij
CLOSE cursorName;

Ten krok pomoże Ci zamknąć kursor po zakończeniu operacji.

  1. Zwolnij przydział
DEALLOCATE cursor_name;

Ten krok pomoże w cofnięciu alokacji kursora i zwolnieniu miejsca w pamięci.

Tym chciałbym zakończyć ten artykuł o Cursorze w SQL. Mam nadzieję, że ten artykuł pomógł Ci dodać wartość do Twojej wiedzy. Aby uzyskać więcej informacji na temat SQL lub baz danych, możesz zapoznać się z naszą obszerną listą lektur tutaj:Bazy danych Edureka .

Podstawy SQL dla początkujących | Dowiedz się SQL | Samouczek SQL dla początkujących | Edureka

Ten film Edureki na temat „Podstawy SQL dla początkujących” pomoże Ci zrozumieć podstawy SQL, a także zapytania SQL, które są bardzo popularne i niezbędne.

Jeśli chcesz wziąć udział w zorganizowanym szkoleniu dotyczącym MySQL, zapoznaj się z naszym Szkoleniem certyfikacyjnym MySQL DBA który jest dostarczany z prowadzonym przez instruktora szkoleniem na żywo i doświadczeniem w rzeczywistych projektach. To szkolenie pomoże ci dogłębnie zrozumieć MySQL i pomoże ci osiągnąć mistrzostwo w tym temacie.

Masz do nas pytanie? Proszę wspomnieć o tym w sekcji komentarzy „Kursor w SQL ” i skontaktuję się z Tobą.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wpływ planu wykonania na oczekiwania ASYNC_NETWORK_IO – część 1

  2. Co to jest relacja jeden-do-wielu w bazie danych? Wyjaśnienie z przykładami

  3. Przycinanie tłuszczu dziennika transakcji

  4. Używanie JShell w Javie 9 w NetBeans 9.0, część 4

  5. Model danych zarządzania zdarzeniami