Typ záznamů Oracle PL / SQL s příklady

Obsah:

Anonim

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 TYPE  IS 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:

DECLARETYPE  IS 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.