Doposud jsme viděli, jak vytvořit proměnné datového typu záznamu založené na tabulce a kurzoru. Ten, který zbývá, je datový typ záznamu definovaný uživatelem, kterému se budeme věnovat v dnešním tutoriálu.
Jak název napovídá, záznamy definované uživatelem jsou proměnné záznamu, jejichž struktura je definována uživatelem, což je na rozdíl od záznamů založených na tabulce nebo kurzoru, jejichž struktury jsou odvozeny z příslušných tabulek nebo kurzoru. To znamená, že pomocí uživatelsky definovaných záznamů můžete mít úplnou kontrolu nad strukturou proměnné záznamu.
Proces vytváření uživatelsky definované proměnné záznamu je rozdělen do dvou částí. Před definováním záznamu musíme nejprve definovat TYPE pro proměnnou záznamu. Tento TYP se stane základem proměnné User Define Record a pomůže při řízení její struktury. Jakmile je TYPE úspěšně deklarován, můžeme jej použít pro vytvoření naší proměnné záznamu definovaného uživatelem.
Syntaxe záznamů definovaných uživatelem v databázi Oracle
Níže je uvedena syntaxe pro vytvoření TYPE pro uživatelsky definovanou proměnnou datového typu záznamu.
TYPE type_name IS RECORD ( field_name1 datatype 1, field_name2 datatype 2, ... field_nameN datatype N );
Jakmile máme deklarován TYP, jsme připraveni vytvořit naši záznamovou proměnnou. Tato proměnná pak získá všechny vlastnosti typu, pomocí kterého je vytvořena. A zde je syntaxe pro vytvoření proměnné datového typu záznamu definovaného uživatelem.
record_name TYPE_NAME;
Všimli jste si, že na rozdíl od proměnné záznamu založené na tabulce nebo kurzoru zde pro deklaraci proměnné záznamu nemusíme používat atribut %ROWTYPE?
Podrobné vysvětlení výše uvedené syntaxe naleznete ve výukovém videu na mém kanálu YouTube.
Příklad:Jak vytvořit uživatelsky definovanou proměnnou datového typu záznamu.
Krok 1:Deklarujte typ pro proměnnou záznamu definovaného uživatelem
SET SERVEROUTPUT ON; DECLARE TYPE rv_dept IS RECORD( f_name VARCHAR2(20), d_name DEPARTMENTS.department_name%TYPE );
Krok 2:Deklarujte uživatelsky definovanou proměnnou záznamu
Po vytvoření TYPU jste připraveni vytvořit svou uživatelsky definovanou proměnnou záznamu.
var1 rv_dept;
Tento výše uvedený příkaz PL/SQL vytvoří proměnnou záznamu s názvem VAR1.
Krok 3:Inicializujte uživatelem definovanou proměnnou záznamu.
Uživatelem definovaná proměnná záznamu může být inicializována několika způsoby. Například můžete inicializovat proměnnou záznamu přímo přiřazením hodnoty pomocí přiřazení proměnné nebo můžete načíst hodnoty uložené do sloupce tabulky pomocí příkazu SELECT-INTO. Pojďme tedy dále s naším příkladem a naučte se, jak inicializovat uživatelem definovanou proměnnou záznamu pomocí příkazu SELECT-INTO.
Dále napíšu sekci provedení. V sekci provádění budeme mít příkaz SELECT, který spojí tabulku zaměstnanců a tabulku oddělení a vrátí křestní jméno a název oddělení konkrétního zaměstnance.
BEGIN SELECT first_name , department_name INTO var1.f_name, var1.d_name FROM employees join departments Using (department_id) WHERE employee_id = 100; DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name); END;
Příkaz select, který zde máme, vrátí křestní jméno a název oddělení zaměstnance, jehož ID zaměstnance je 100. Data pro oba sloupce pocházejí z různých tabulek, proto jsme zde použili JOIN. Protože jsou v dotazu zahrnuty dvě různé tabulky, v takové situaci není použití Table Based Record Variable možné, proto je životaschopným řešením uživatelsky definovaná proměnná záznamu.
Spojme všechny výše uvedené kusy kódů dohromady do jednoho anonymního bloku PL/SQL.
SET SERVEROUTPUT ON; DECLARE TYPE rv_dept IS RECORD( f_name VARCHAR2(20), d_name departments.department_name%type ); var1 rv_dept; BEGIN SELECT first_name , department_name INTO var1.f_name, var1.d_name FROM employees join departments Using (department_id) WHERE employee_id = 100; DBMS_OUTPUT.PUT_LINE(var1.f_name||' '||var1.d_name); END; /
Takto vytvoříme proměnnou datového typu záznamu definované uživatelem v databázi Oracle. Doufám, že se vám čtení líbilo a dozvěděli jste se něco nového. Každý měsíc také rozdávám zboží RebellionRider jednomu náhodně vybranému výherci, takže nezapomeňte sdílet tento blog se svými přáteli na své sociální síti.
To je vše, přátelé, děkuji a přeji krásný den!