Przykłady kursora mysql

Przykłady kursora mysql
W MySQL zapytanie Wybierz zwraca listę dopasowania rekordów po wykonaniu wywołanym zestawem wyników. Kursor jest przydatną cechą MySQL do przemierzania każdego rekordu osobno od zestawu wyników. Czasami wymaga wykonania dodatkowego przetwarzania dla wszystkich konkretnych rekordów zestawu wyników przed zwrotem wyjścia zapytania. Można to łatwo zrobić za pomocą kursora. Cechy, zalety, wady i zastosowania kursora MySQL zostały opisane w tym samouczku.

Cechy kursora mysql:

  1. Kursor MySQL jest ASENSITIVE w wersji 8 MySQL+. Oznacza to, że serwer bazy danych może, ale nie musi wykonać kopii zestawu wyników.
  2. Kursor Mysql jest tylko do odczytu. Więc nie można go użyć do aktualizacji rekordu.
  3. Kursor mysql nie jest przewijany. Oznacza to, że może iść tylko do przodu i nie może pominąć żadnego rekordu.

Kroki do używania kursora:

Główne kroki używania kursora w MySQL do odczytania każdego rekordu zestawu wyników pokazano poniżej.

Dokonaj kursora:

Deklaruj kursor_name Cursor_name dla select_statement;

Zmienna kursora wymaga zdefiniowania iteracji zestawu wyników zwróconych przez instrukcję Select.

Otwórz kursor

Otwórz nazwę cursor_name;

Kursor musi otworzyć się, aby wskazać punkt początkowy zestawu wyników.

Pobierz kursor

Fetch Cursor_name do zmiennej_list;

Polecenie Fetch służy do odczytania pól zdefiniowanych w zapytaniu, które zostało użyte w momencie deklarowania kursora.

Zamknij kursor

Zamknij nazwę cursor_name;

Kursor jest wymagany do zbliżania się do zresetowania zestawu wyników i usunięcia odniesienia do zestawu wyników.

Wymagania wstępne:

Musisz utworzyć niezbędne tabele z danymi, aby poznać użycie kursora w MySQL. Otwórz terminal i uruchom następujące polecenie, aby połączyć się z serwerem MySQL, jeśli nie ma hasła dla użytkownika root.

$ sudo mysql -u root

Uruchom następujące polecenie, aby wybrać bazę danych.

Użyj test_db;

Uruchom następujące polecenie, aby utworzyć nazwaną bazę danych test_db.

Utwórz bazę danych test_db;

Uruchom następujące zapytanie, aby utworzyć tabelę o nazwie Sales_persons z czterema polami.

Utwórz tabelę Sales_persons (
ID Int Auto_increment Key podstawowy,
Nazwa varchar (30) nie null,
e -mail varchar (50),
contact_no varchar (30));

Uruchom następujące zapytanie, aby wstawić trzy rekordy do sprzedawca tabela.

Wstaw do „Sales_persons” („ID”, „Nazwa”, „e -mail”, „contact_no”) wartości (null, „Kamal Hasan”, „[email protected] ', „0191275634”),
(Null, „Nila Hossain”, „[email protected] ', „0185342357”),
(Null, „Abir Hossain”, „[email protected] ', „01634235698”);

Uruchom następujące zapytanie, aby utworzyć tabelę o nazwie obroty z czterema dziedzinami zawierającymi klucz obce, który stworzy relacje jeden do wielu z Sales_persons stół do obroty tabela.

Utwórz sprzedaż tabeli (
Id int not zerowy klucz podstawowy,
Sales_Date Data nie null,
kwota int,
sp_id int,
Ograniczenie FK_SP Klucz obcy (SP_ID)
Referencje Sales_persons (id)
Na Usuń Cascade na aktualizacji Cascade);

Uruchom następujące zapytanie, aby wstawić cztery rekordy do obroty tabela.

Wstaw do „sprzedaży” („id”, „sales_date”, „kwota”, „sp_id”)
(„90”, „2021-11-09”, „800000”, „1”),
(„34”, „2020-12-15”, „5634555”, „3”),
(„67”, „2021-12-23”, „900000”, „1”),
(„56”, „2020-12-31”, „6700000”, „1”);

Korzystanie z kursora MySQL:

Kursor jest używany głównie w procedurze lub funkcji MySQL, która zawiera jedno lub więcej wybierz zapytanie, a zadeklarowany kursor iteruje każdy rekord zestawu wyników zwróconych przez zapytanie. Utwórz nazwaną funkcję MySQL Calculate_bonus z następującym stwierdzeniem, które weźmie argument liczb całkowitych i zwróci wartość zmiennoprzecinkową. Wybierz zapytanie, które zostało użyte w funkcji, będzie obliczyć całkowitą kwotę sprzedaży każdego sprzedawcy i zwróci nazwę sprzedawcy i całkowitą sprzedaż w zestawie wyników. Funkcją kursora jest obliczenie 15% całkowitej sprzedaży jako premii, jeżeli całkowita kwota sprzedaży wynosi ponad 10000; W przeciwnym razie bonus wyniesie 10% całkowitej sprzedaży. Funkcja zwróci kwotę bonusową na podstawie wartości identyfikacyjnej sprzedawcy. Uruchom następującą instrukcję z wiersza MySQL po wybraniu bazy danych, aby utworzyć funkcję.

Delimiter //
Utwórz funkcję „Calculate_bonus” („SPID” int)
Zwraca Varchar (200)
Odczytuje dane SQL
Deterministyczny
ZACZYNAĆ
Zadeklarowane dokonane int domyślne false;
Deklaruj całkowitą domyślną 0;
Deklaruj osobę varchar (50) domyślnie „”;
Zadeklaruj premia int default 0;
Deklarować wyjściowe Varchar (200);
Zadeklaruj kursor cur
Wybierz nazwę, suma (kwota)
Ze sprzedaży, Sales_persons
Gdzie sales_persons.ID = sprzedaż.SP_ID i SP_ID = SPID
Grupa przez sp_id;
Deklaruj kontynuuj obsługę dla nie znalezionego ustawionego = true;
Otwarty cur;
Przyprzyj Cur w osobę, ogółem;
Jeśli łącznie> 10000, to
Ustaw bonus = ogółem*0.15;
W PRZECIWNYM RAZIE
Ustaw bonus = ogółem*0.10;
Zakończyć, jeśli;
Set wyjście = concat („bonus”, osoba, „to tk.", bonus".");
Zamknij cur;
Zwrot zwrotny;
KONIEC;
//

Uruchom następujące zapytanie, aby przeczytać wszystkie rekordy Sales_persons tabela.

Wybierz * z sales_persons;

Uruchom następujące zapytanie, aby przeczytać wszystkie rekordy obroty tabela.

Wybierz * ze sprzedaży;

Uruchom następujące zapytanie, aby zadzwonić Calculate_bonus () Funkcja MySQL z wartością argumentu, 1. Według tabeli sprzedaży są trzy rekordy dla sprzedawcy, którego identyfikator wynosi 1. Zatem premia wyniesie 15% zniżki (6700000+900000+800000).

Wybierz Calculate_bonus (1);

Uruchom następujące zapytanie, aby zadzwonić Calculate_bonus () Funkcja MySQL z wartością argumentu, 2. Według tabeli sprzedaży nie ma zapisu dla sprzedawcy, którego identyfikator wynosi 2. Więc bonus wyniesie 0.

Wybierz Calculate_bonus (2);

Uruchom następujące zapytanie, aby zadzwonić Calculate_bonus () Funkcja MySQL z wartością argumentu, 3. Według tabeli sprzedaży jest jeden rekord dla sprzedawcy, którego identyfikator wynosi 3. Tak więc bonus wyniesie 15% z 5634555.

Wybierz Calculate_bonus (3);

Wniosek:

Kursor MySQL ułatwia konkretne zadanie poprzez iterowanie każdego wiersza tabeli. Kursor MySQL został pokazany w tym samouczku za pomocą funkcji MySQL. Kursor MySQL może być również używany w ramach procedury MySQL. Mam nadzieję, że koncepcja kursora MySQL zostanie wyczyszczona dla użytkownika, a użytkownik będzie mógł użyć kursora po przeczytaniu tego samouczka.