Silne kursory referencyjne z typem danych rekordu opartym na tabeli
Jak dowiedzieliśmy się we wstępie do Kursorów Odniesień, w Oracle Database istnieją dwa rodzaje kursorów Odniesień PL/SQL.
- Silne kursory referencji i
- Słabe kursory referencji
W tej serii omówimy wszystkie koncepcje obu typów kursorów odniesienia. Na tym blogu zaczniemy od pierwszego, którym są Silne Kursory Odniesienia z typem danych rekordu opartym na tabeli i typem danych rekordu zdefiniowanym przez użytkownika.
Co to są silne kursory odniesień PL/SQL w bazie danych Oracle?
Kursor odniesienia, który ma ustalony typ zwracany, nazywany jest w Oracle Database silnym kursorem odniesienia. Ze względu na stały typ zwracany, silne kursory referencyjne mogą być używane tylko selektywnie. Na przykład z tymi instrukcjami SELECT, które zwracają wynik, którego typ danych pasuje do tego, który poprawiłeś podczas deklaracji kursora.
Czy możemy użyć silnego kursora odwołania z dowolnym poleceniem SELECT w bazie danych Oracle?
Nie, nie możemy używać silnych kursorów referencji z żadną instrukcją SELECT. Dzieje się tak z powodu ustalonego „Typu zwrotu”.
Niemniej jednak może być używany tylko z tymi instrukcjami SELECT, które zwracają wynik, którego typ danych pasuje do „klauzuli zwrotnej” kursora.
Czy możemy użyć dowolnych typów danych PL/SQL do deklarowania naszego silnego kursora referencji?
Nie, nie możemy. Co więcej, typ zwracany przez silny kursor referencyjny musi zawsze być typem danych rekordu. Może to być typ danych Rekord oparty na tabeli lub typ danych Rekord zdefiniowany przez użytkownika.
Przykład silnych kursorów referencyjnych z typem danych rekordu opartego na tabeli
Napiszmy przykład. Tutaj utworzymy silny kursor odniesienia z typem danych rekordu opartym na tabeli.
SET SERVEROUTPUT ON DECLARE /*Create Ref Pointer Type*/ TYPE my_RefCur IS REF CURSOR RETURN employees%ROWTYPE; /*Create Cursor Variable*/ cur_var my_RefCur; rec_var employees%ROWTYPE; BEGIN OPEN cur_var FOR SELECT * FROM employees WHERE employee_id = 100; FETCH cur_var INTO rec_var; CLOSE cur_var; DBMS_OUTPUT.PUT_LINE ('Employee '||rec_var.first_name||' has salary '||rec_var.salary||'.'); END; /
Tworzenie kursora odniesienia to proces dwuetapowy.
Utwórz typ wskaźnika referencyjnego.
Najpierw musimy stworzyć typ wskaźnika ref. Tak więc, używając instrukcji TYPE, tworzymy wskaźnik Ref Cursor Type, tak jak w powyższym kodzie. W tej instrukcji najpierw piszesz słowo kluczowe TYPE, po którym następuje nazwa twojego kursora ref. Następnie musisz wpisać zarezerwowaną frazę IS REF CURSOR. Poinformuje kompilator, że tworzymy typ, którym jest REF CURSOR. Następnie musisz określić klauzulę RETURN.
Na przykład
TYPE my_RefCur IS REF CURSOR RETURN employees%ROWTYPE;
Utwórz zmienną kursora
W drugim kroku tworzymy zmienną kursora. Aby utworzyć zmienną kursora, musisz najpierw wpisać nazwę swojej zmiennej, a następnie nazwę kursora odniesienia. Następnie ta zmienna będzie używana do odwoływania się do kursora odniesienia, nad którym jest tworzona.
Na przykład
cur_var my_RefCur;
Oprócz zmiennej kursora w powyższym kodzie mamy również dodatkową zmienną. Jest to ponownie typ danych rekordu oparty na tabeli i zaprojektowany przy użyciu tabeli „Pracownicy”. Ponadto ta zmienna będzie przechowywać dane pobrane z kursora.
rec_var employees%ROWTYPE;
Sekcja wykonania
W sekcji wykonania naszego kodu mamy cztery instrukcje wykonywalne. Pozwól, że ci to wyjaśnię.
-
Oświadczenie OPEN FOR
Pierwsza instrukcja to instrukcja OPEN FOR. Wiąże instrukcję SELECT ze zmienną Cursor i otwiera kursor dla instrukcji. Ponadto szuka również wszystkich zasobów wymaganych do przetworzenia instrukcji SELECT.
-
Oświadczenie FETCH
Jak omówiliśmy w samouczku PL/SQL 26. Proces pobierania danych z kursora nazywa się pobieraniem. Dlatego tutaj pobieramy dane z kursora referencji do zmiennej rekordu „Rec_Var”.
-
Zamknij oświadczenie
Gdy skończymy z naszym kursorem, wskazane jest jego zamknięcie, aby nasz Oracle Engine / Server mógł zrezygnować ze wszystkich powiązanych z nim zasobów. Dokładnie to zrobiliśmy w trzecim oświadczeniu. Używając słowa kluczowego CLOSE, po którym następuje zmienna kursora, zamknęliśmy nasz kursor ref.
-
Oświadczenie wyjściowe
Czwarta instrukcja to instrukcja DBMS_OUTPUT. Wyświetli z powrotem imię i pensję pracownika o identyfikatorze pracownika 100.
Możesz obejrzeć samouczek PL/SQL 33, aby poznać działanie zmiennej rekordu opartej na tabeli.
Dlatego na zakończenie…
W powyższym kodzie utworzyliśmy kursor PL/SQL Strong Ref Cursor o nazwie „my_RefCur”, który zwróci typ danych rekordu oparty na tabeli wyników. Ponadto ten typ danych rekordu oparty na tabeli jest obsługiwany w tabeli Pracownicy schematu HR. Dlatego przed uruchomieniem tego programu musimy się upewnić, że jesteśmy połączeni ze schematem HR naszej bazy danych.
Co więcej, jeśli uczysz się lepiej, oglądając wideo, oto jeden dla Ciebie. Śmiało i sprawdź to.
Jest to samouczek dotyczący tworzenia silnych kursorów odwołań PL/SQL przy użyciu typu danych rekordu opartego na tabeli w bazie danych Oracle. Mam nadzieję, że nauczyłeś się czegoś nowego. Ponadto upewnij się, że udostępniasz tego bloga w swoich mediach społecznościowych znajomym.
Dzięki za odwiedziny. Bądź na bieżąco, ponieważ w następnym samouczku dowiemy się, jak utworzyć silny kursor referencyjny ze zmienną rekordu zdefiniowaną przez użytkownika.
Miłego dnia!