sql >> Databáze >  >> RDS >> Database

Silné referenční kurzory s datovým typem záznamu založeného na tabulce

Silné referenční kurzory s datovým typem záznamu založeného na tabulce

Jak jsme se dozvěděli v úvodu k referenčním kurzorům, existují dva typy referenčních kurzorů PL/SQL v databázi Oracle.

  1. Silné referenční kurzory a
  2. Slabé referenční kurzory

V této sérii prozkoumáme všechny koncepty obou těchto typů referenčních kurzorů. S tímto blogem začneme prvním, kterým jsou silné referenční kurzory s datovým typem záznamu založeným na tabulce a s datovým typem záznamu definovaným uživatelem.

Co jsou silné referenční kurzory PL/SQL v databázi Oracle?

Referenční kurzor, který má pevný návratový typ, se v databázi Oracle nazývá silný referenční kurzor. Vzhledem k pevnému typu návratu lze silné referenční kurzory používat pouze selektivně. Například s těmi příkazy SELECT, které vracejí výsledek, jehož datový typ se shoduje s tím, který jste opravili během deklarace kurzoru.

Můžeme použít silný referenční kurzor s jakýmkoli příkazem SELECT v databázi Oracle?

Ne, nemůžeme použít silné referenční kurzory s žádným příkazem SELECT. Důvodem je pevně daný „Typ návratu“.

Lze jej však použít pouze s těmi příkazy SELECT, které vracejí výsledek, jehož datový typ se shoduje s ‚Return Clause‘ kurzoru.

Můžeme použít nějaké datové typy PL/SQL pro deklaraci našeho silného referenčního kurzoru?

Ne, nemůžeme. Navíc návratový typ silného referenčního kurzoru musí být vždy datový typ záznamu. Může to být datový typ záznamu založeného na tabulce nebo datový typ záznamu definovaného uživatelem.

Příklad silných referenčních kurzorů s datovým typem záznamu založeného na tabulce

Pojďme napsat příklad. Zde vytvoříme silný referenční kurzor s datovým typem záznamu založeného na tabulce.

 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;
/

Vytvoření referenčního kurzoru je dvoufázový proces.

Vytvořte typ ukazatele reference.

Nejprve musíme vytvořit typ ukazatele reference. Pomocí příkazu TYPE tedy vytvoříme ukazatel Ref Cursor Type stejně jako ve výše uvedeném kódu. V tomto příkazu nejprve napište klíčové slovo TYPE následované názvem vašeho referenčního kurzoru. Poté musíte napsat vyhrazenou frázi IS REF CURSOR. Kompilátoru to řekne, že vytváříme typ, který je REF CURSOR. Poté musíte zadat klauzuli RETURN.

Například

TYPE	my_RefCur	IS REF CURSOR RETURN 	employees%ROWTYPE;

Vytvořte proměnnou kurzoru

Ve druhém kroku vytvoříme kurzorovou proměnnou. Chcete-li vytvořit proměnnou kurzoru, musíte nejprve napsat název vaší proměnné následovaný názvem vašeho referenčního kurzoru. Poté bude tato proměnná použita jako odkaz na referenční kurzor, nad kterým je vytvořena.

Příklad

cur_var my_RefCur;

Kromě proměnné kurzoru ve výše uvedeném kódu máme také další proměnnou. Toto je opět datový typ záznamu založený na tabulce a navržený pomocí tabulky „Zaměstnanci“. Navíc tato proměnná bude obsahovat data načtená z kurzoru.

rec_var     employees%ROWTYPE;

Sekce provádění

V sekci provádění našeho kódu máme čtyři spustitelné příkazy. Dovolte mi, abych vám to vysvětlil.

  1. OTEVŘÍT PRO výpis

První příkaz je příkaz OPEN FOR. Přidruží příkaz SELECT k proměnné Cursor a otevře kurzor pro příkaz. Dále také hledá všechny zdroje potřebné pro zpracování příkazu SELECT.

  1. Příkaz FETCH

Jak jsme probrali v PL/SQL tutoriálu 26. Proces získávání dat z kurzoru se nazývá načítání. Proto zde načítáme data z referenčního kurzoru do proměnné záznamu ‚Rec_Var‘.

  1. Zavřít prohlášení

Jakmile skončíme s kurzorem, je vhodné jej zavřít, aby se náš Oracle Engine / Server mohl vzdát všech zdrojů s ním spojených. Přesně to jsme udělali ve třetím prohlášení. Použitím klíčového slova CLOSE následovaného proměnnou kurzoru jsme zavřeli náš referenční kurzor.

  1. Výstupní příkaz

Čtvrtý příkaz je příkaz DBMS_OUTPUT. Zobrazí zpět křestní jméno a plat zaměstnance s ID zaměstnance 100.

Můžete se podívat na výukový program PL/SQL 33, abyste se naučili fungování tabulkové proměnné záznamu.

Proto na závěr…

Ve výše uvedeném kódu jsme vytvořili silný referenční kurzor PL/SQL s názvem „my_RefCur“, který vrátí datový typ záznamu založený na výsledkové tabulce. Kromě toho je tento datový typ záznamu založený na tabulce podporován v tabulce Zaměstnanci schématu HR. Před spuštěním tohoto programu se tedy musíme ujistit, že jsme připojeni k HR schématu naší databáze.

Navíc, pokud se lépe učíte sledováním videa, pak je tu jedno pro vás. Pokračujte a podívejte se na to.

Toto je návod, jak vytvořit silné referenční kurzory PL/SQL pomocí datového typu záznamu založeného na tabulce v databázi Oracle. Doufám, že jste se naučili něco nového. Kromě toho nezapomeňte sdílet tento blog na svých sociálních sítích se svými přáteli.

Díky za návštěvu. Zůstaňte naladěni, protože v dalším tutoriálu se naučíme, jak vytvořit silný referenční kurzor s uživatelsky definovanou proměnnou záznamu.

Krásný den!


  1. Nejrychlejší způsob aktualizace 120 milionů záznamů

  2. MySQL - Výběr sloupce, který není ve skupině

  3. Existuje způsob, jak získat ID automatického přírůstku z připraveného příkazu

  4. Existuje rozdíl mezi SQL Server Express (2012) a LocalDB?