W większości przypadków podczas wykonywania zapytań SQL za pomocą MySQL Shell lub MySQL Workbench, nie zapisujemy wyników, nawet jeśli mamy funkcję, aby zapisać wyniki przetwarzane przez serwer za pomocą procedury przechowywanej.
W tym samouczku nie będę omawiać procedur, funkcji ani wyzwalaczy przechowywanych. Zamiast tego po prostu zanurzę się w pokazanie, w jaki sposób możesz użyć kursorów MySQL do uruchomienia wyników w procedurach przechowywanych.
Zanim zaczniemy tworzyć i używać kursora z przykładami, poświęćmy chwilę, aby omówić kilka kluczowych punktów na temat kursora, o którym powinieneś wiedzieć:
Cechy kursora mysql
Teraz, gdy wiemy, co oznacza kursor, możemy zacząć zilustrować, jak to działa przy użyciu przykładów w świecie rzeczywistym:
Podstawowe użycie
Ogólna składnia do deklarowania kursora w MySQL jest prosta. Zaczynamy od użycia słowa kluczowego Declare, jak pokazano w przykładowym zapytaniu poniżej:
Jak ogłosić kursor
Deklaruj kursor_name cursor_name dla Select_Expression;Nazwa_kursor to nazwa nadana kursorowi podczas deklaracji. Zwróć uwagę, że deklaracja kursora powinna być po dowolnej zadeklarowanej zmiennych, aby zapobiec wyciągnięciu błędów MySQL.
Dalej jest Select_Expression, który przechowuje instrukcję Select powiązaną z kursorem.
Jak otworzyć kursor
Po ogłoszeniu kursora i MySQL jest świadomy, że kursor istnieje, możemy zacząć go używać, co wymaga otwarcia kursora.
Ogólna składnia do otwarcia kursora jest jak pokazano w zapytaniu poniżej:
Otwórz nazwę cursor_name;To polecenie otwiera kursory, do których odwołuje się jego nazwa i można je zacząć używać.
Jak pobrać dane
Otwarcie kursora pozwala pobierać informacje przechowywane w procedurze, funkcji lub spustu.
Ogólna składnia do pobierania danych za pomocą kursora jest jak pokazano:
Fetch Cursor_name w zmienne;NOTATKA: Jak wspomniano, upewnij się, że kursor jest używany po zadeklarowaniu zmiennych, aby uniknąć błędów.
Jak zamknąć i uwolnić kursor
Po zakończeniu operacji wymagających zdefiniowanego kursora najlepiej zamknąć kursor, który uwalnia powiązaną z nim pamięć.
Po zamknięciu kursora użytkownik musi ponownie otworzyć kursor za pomocą otwartego słów kluczowych (pokazanych powyżej) przed użyciem kursora.
Nie musisz deklarować kursora po bliskim stwierdzeniu.
Ogólna składnia w celu zamknięcia kursora jest jak pokazano w zapytaniu poniżej:
Zamknij nazwę cursor_name;Obsługa błędów
Kursor MySQL działa poprzez rekurencyjne odczytanie następnego wiersza w zestawie wyników. Jeśli następny wiersz jest niedostępny, kursor zamknie i nie zwróci danych, chyba że określono. Może to stanowić problem, zwłaszcza po osiągnięciu kursora końca wyniku.
Jako rozwiązanie definiuje się nie znalezionego przewodnika. To określa działanie, które należy podjąć, jeśli następny wiersz nie zostanie znaleziony.
Ogólna składnia do obsługi błędów podczas korzystania z kursora to:
Deklaruj kontynuuj moduł obsługi nie znalezionego ustawionego termin = true;Wartość zakończenia jest zmienną używaną do określenia, że kursor osiągnął koniec wyniku. Nazwa zmiennej może być dowolną nazwą, o ile pasuje do konwencji nazewnictwa zmiennej MySQL.
NOTATKA: Podobnie jak wszystkie zmienne używane w kursorze, należy go zdefiniować, zanim zostanie użyta w kursorze.
Przykładowy przypadek użycia
Utwórzmy kursor, który gromadzi e -maile klientów dostępne w tabeli klientów przykładowej bazy danych Sakila.
Zasób do pobierania i instalowania bazy danych Sakila jest poniżej:
https: // dev.Mysql.com/doc/sakila/en/
Poniżej ilustruje procedurę wykorzystującą kursor do pobierania wiadomości e -mail:
Użyj Sakila;Po wykonaniu zapytania otrzymasz wyjście, jak pokazano poniżej:
Wniosek
W tym samouczku przeszliśmy za pomocą kursorów MySQL, aby analizować dane przechowywane w zestawie wyników. Rozważ dokumentację, aby opanować sposób wdrożenia kursorów.