Co je typ záznamu?
Typ záznamu je komplexní datový typ, který umožňuje programátorovi vytvořit nový datový typ s požadovanou strukturou sloupce.
- Seskupuje jeden nebo více sloupců a vytváří nový datový typ
- Tyto sloupce budou mít vlastní název a datový typ
- Typ záznamu může data přijmout
- Jako jeden záznam, který se skládá z mnoha sloupců NEBO
- Může přijmout hodnotu pro jeden konkrétní sloupec záznamu
- Typ záznamu jednoduše znamená nový datový typ. Jakmile je typ záznamu vytvořen, bude uložen jako nový datový typ do databáze a stejný bude použit k deklaraci proměnné v programech.
- Bude používat klíčové slovo 'TYPE' k instruování kompilátoru, že vytváří nový datový typ.
- Může být vytvořen na „ úrovni databáze“, kterou lze uložit jako databázové objekty, použít ji v celé databázi, nebo ji lze vytvořit na „ úrovních podprogramu“ , která je viditelná pouze uvnitř podprogramů.
- Typ záznamu na úrovni databáze lze také deklarovat pro sloupce tabulky, takže jeden sloupec může obsahovat komplexní data.
- K datům v tomto datovém typu lze přistupovat odkazem na jejich název_ proměnné, následovaný operátorem období (.), Za kterým následuje název_sloupce, tj. „
.
Syntaxe deklarace na úrovni databáze:
CREATE TYPEIS RECORD( ,);
V první syntaxi vidíme klíčové slovo 'CREATE TYPE', které instruuje kompilátor, aby vytvořil typ záznamu s názvem "type_name_db" se zadaným sloupcem jako databázovým objektem.
Toto je uvedeno jako individuální příkaz a ne uvnitř žádného bloku.
Syntaxe deklarace na úrovni podprogramu:
DECLARETYPEIS RECORD( ,);BEGIN ;END;
V syntaxi vytváříme typ záznamu s názvem "type_name" pouze uvnitř podprogramu.
V obou deklaračních metodách je způsob definování sloupce a datového typu podobný.
Příklad 1: Typ záznamu jako databázový objekt
V tomto programu uvidíme, jak vytvořit „typ záznamu“ jako databázový objekt. Chystáme se vytvořit typ záznamu 'emp_det' se čtyřmi sloupci. Sloupce a jejich datový typ jsou následující:
- EMP_NO (NUMBER)
- EMP_NAME (VARCHAR2 (150))
- SPRÁVCE (ČÍSLO)
- PLATBA (ČÍSLO)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/Výstup:
Type created
Vysvětlení kódu:
- Výše uvedený kód vytvoří typ emp_det jako databázový objekt.
- Bude mít 4 sloupce emp_no, emp_name, manažer a plat, jak jsou definovány.
- Nyní je emp_det podobný jinému datovému typu (například NUMBER, VARCHAR @ atd.) A je viditelný v celé databázi. Proto to lze použít v celé databázi k deklaraci proměnné tohoto typu.
Výstup:
Vytvořil typ 'emp_det' jako typ záznamu na úrovni databáze.
Příklad 2: Typ záznamu na úrovni podprogramu - přístup na úrovni sloupce
V tomto příkladu uvidíme, jak vytvořit typ záznamu na úrovni podprogramu a jak z něj naplnit a načíst hodnoty podle úrovně sloupce.
Budeme vytvářet „emp_det“ record_type na úrovni podprogramu a použijeme je k naplnění a zobrazení dat z něj.
DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGINguru99_emp_rec.emp_no:= 1001;guru99_emp_rec.emp_name:=:'XXX';guru99_emp_rec.manager:= 1000;guru99_emp_rec.salary:=10000;dbms_output.put.line('Employee Detail');dbms_output.put_line ('Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line ('Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line ('Employee Salary: ' ||guru99_emp_rec.salary);dbms_output.put_line ('Employee Manager Number: '||guru99_emp_rec.manager);END;/
Výstup:
Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000
Vysvětlení kódu:
- Řádek kódu 2-8 : Typ záznamu 'emp_det' je deklarován se sloupci emp_no, emp_name, plat a správce datového typu ČÍSLO, VARCHAR2, ČÍSLO, ČÍSLO.
- Řádek kódu 9: Proměnná guru99_emp_rec je deklarována jako datový typ „emp_det“. Nyní tato proměnná může obsahovat hodnotu, která obsahuje všechna výše uvedená 4 pole / sloupce.
- Řádek kódu 11: Naplnění pole „emp_no“ pole „guru99_emp_rec“ hodnotou 1001.
- Řádek kódu 12: Vyplnění pole 'emp_name' v 'guru99_emp_rec' hodnotou XXX.
- Řádek kódu 13: Naplnění pole 'manager' v 'guru99_emp_rec' hodnotou 1000.
- Řádek kódu 14: Naplnění pole „plat“ položky „guru99_emp_rec“ hodnotou 10 000.
- Řádek kódu 15-19: Zobrazení hodnoty parametru 'guru99_emp_rec' na výstupu.
Příklad 3: Typ záznamu na úrovni podprogramu na úrovni řádků
V tomto příkladu uvidíme, jak vytvořit typ záznamu na úrovni podprogramu a jak jej naplnit jako úroveň řádku. Budeme vytvářet „emp_det“ record_type na úrovni podprogramu a použijeme je k naplnění a zobrazení dat z něj.
DECLARETYPE emp_det IS RECORD(EMP_NO NUMBER,EMP_NAME YARCHAR2( 150),MANAGER NUMBER,SALARY NUMBER);guru99_emp_rec emp_det;BEGININSERT INTO emp (emp_no, emp_name, salary, manager) VALUES (1002,'YYY',15000,1000);COMMIT;SELECT emp_no, emp_name, salary, manager INTO guru99_emp_rec FROM emp WHERE emp_no=1002;dbms_output.put_line (‘Employee Detail’);dbms_output.put_line (‘Employee Number: '||guru99_emp_rec.emp_no);dbms_output.put_line (‘Employee Name: '||guru99_emp_rec.emp_name);dbms_output.put_line (‘Employee Salary: '||guru99_emp_rec. salary);dbms_output.put_line (‘Employee Manager Number: '||guru99_emp_rec.manager);END;/
Vysvětlení kódu:
- Řádek kódu 2-8 : Typ záznamu 'emp_det' je deklarován se sloupci emp_no, emp_name, plat a správce datového typu ČÍSLO, VARCHAR2, ČÍSLO, ČÍSLO.
- Řádek kódu 9: Proměnná guru99_emp_rec je deklarována jako datový typ „emp_det“. Nyní tato proměnná může obsahovat hodnotu, která obsahuje všechna výše uvedená 4 pole / sloupce.
- Řádek kódu 11: Naplnění tabulky emp daty 1002 jako emp_no, YYY jako emp_name, 15000 jako plat a 1000 jako číslo manažera.
- Řádek kódu 12: Potvrzení výše uvedené transakce vložení.
- Řádek kódu 13: Naplnění proměnné „guru99_emp_rec“ jako dat na úrovni řádků z výběrového dotazu pro číslo zaměstnance 1002.
- Řádek kódu 15-19: Zobrazení hodnoty parametru 'guru99_emp_rec' na výstupu.
Výstup:
Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000
Poznámka: K typu záznamu lze přistupovat pouze na úrovni sloupce při přesměrování jeho hodnoty do libovolného výstupního režimu.