Przykład kursora serwera SQL

Przykład kursora serwera SQL
Kursory to podstawowa koncepcja w bazach danych. Pozwalają ci iterować w wyniku zapytania. Może to być przydatne, gdy trzeba podjąć działania na podstawie wiersza po rzędu, prowadząc do uproszczonych i sekwencyjnych operacji do bazy danych.

Ten artykuł prowadzi Cię przez podstawy pracy z kursorami na serwerze SQL.

Co to jest kursor?

Zacznijmy od podstaw i omówmy, czym jest kursor bazy danych. Kursor to obiekt, który umożliwia przemierzanie wierszy powstałego zapytania. Mówiąc prosto, kursor umożliwia przetwarzanie wierszy uzyskanego zestawu indywidualnie.

Cykl życia kursora SQL Server

Kursor serwera SQL przechodzi różne kroki. Poniżej opisano cykl życia kursora na serwerze SQL.

Zaczynasz od ogłoszenia kursora za pomocą instrukcji SQL. Poniższa składnia pokazuje przykładową definicję kursora

Deklaruj kursor kursor
Dla Select_Query;

Drugim krokiem jest otwarcie kursora, umożliwiając przechowywanie danych z zestawu wyników. Otwórz kursor jako:

Otwórz nazwę cursor_name;

Na etapie pobierania możesz pobrać wiersze z kursora jeden po drugim lub w zestawie. Przykład składni Fetch to:

pobrać następny z kursora do listy_of_variables;

Po zakończeniu pobierania danych zamknij kursor.

Zamknij nazwę cursor_name;

Wreszcie, przekazaj kursor, który usuwa definicję kursora i uwalnia z nią powiązane zasoby systemowe.

Deallocate cursor_name;

Przykładowe użycie kursora

Weźmy przykład, aby zilustrować, jak korzystać z kursora SQL Server. W naszym przykładzie użyjemy przykładowego SalesDB dla SQL Server. Pobierz i eksperymentuj z tym sam.

Zaczniemy od ogłoszenia zmiennych posiadających nazwę i cenę produktu oraz kursora, aby przetworzyć wynik zapytania.

Przykładowy fragment kodu jest jak podany poniżej:

OGŁOSIĆ
@product_name varchar (255),
@Price dziesiętny (10,2);
OGŁOSIĆ
STAKE_CURSOR KURSOR
Do wybrania
@Nazwa produktu,
@cena
Z
Produkty;

Po zakończeniu kursora i deklaracji zmiennej możemy otworzyć i użyć kursora do pobrania danych.

Przykładem jest jak pokazano:

Użyj SalesDB;
OGŁOSIĆ
@Name varchar (255),
@Price dziesiętny (10,2);
OGŁOSIĆ
STAKE_CURSOR KURSOR
Do wybrania
@Nazwa,
@Cena
Z
Produkty;
Otwórz próbkę_cursor;
przyciągnąć następny z próbki_cursor do
@Nazwa,
@Cena;
podczas gdy @@ fetch_status = 0
ZACZYNAĆ
print @Name + cast (@Price as varchar (max));
przyciągnąć następny z próbki_cursor do
@Nazwa,
@Cena;
KONIEC;
Zamknij próbkę_cursor;
Deallocate Sample_Cursor;

Po pobraniu wymaganych danych, zamykamy i denerwujemy kursor w celu zwolnienia zasobów systemowych.

Zamknięcie.

Ten przewodnik nauczył Cię podstaw pracy z kursorami SQL Server. Chociaż rzadko będziesz używać kursorów do przetwarzania danych na podstawie rządu, kursory mogą być bardzo przydatne, gdy są prawidłowo używane.