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

Silne kursory referencyjne z typem danych rekordu opartego na tabeli

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.

  1. Silne kursory referencji i
  2. 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ę.

  1. 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.

  1. 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”.

  1. 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.

  1. 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!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak włączyć dzienniki ogólne i dzienniki błędów w AWS RDS?

  2. 4 sposoby na uzyskanie definicji widoku za pomocą języka Transact-SQL

  3. Korzystanie z ODBC z Salesforce i OneLogin Single Sign On (SSO)

  4. Jak komentować w SQL

  5. Grupy dostępności AlwaysOn:Kworum