Čo je typ záznamu?
Typ záznamu je komplexný dátový typ, ktorý umožňuje programátorovi vytvoriť nový dátový typ s požadovanou štruktúrou stĺpcov.
- Zoskupuje jeden alebo viac stĺpcov a vytvára nový dátový typ
- Tieto stĺpce budú mať vlastný názov a typ údajov
- Typ záznamu môže údaje prijať
- Ako jeden záznam, ktorý sa skladá z mnohých stĺpcov ALEBO
- Môže prijať hodnotu pre jeden konkrétny stĺpec záznamu
- Typ záznamu jednoducho znamená nový dátový typ. Po vytvorení typu záznamu sa tento uloží do databázy ako nový dátový typ a rovnako sa bude používať na deklarovanie premennej v programoch.
- Použije kľúčové slovo „TYPE“ na inštruovanie kompilátora, že vytvára nový dátový typ.
- Môže byť vytvorený na „ databázovej úrovni“, ktorá môže byť uložená ako databázové objekty, použitá v celej databáze, alebo môže byť vytvorená na „ úrovniach podprogramu“ , ktorá je viditeľná iba vo vnútri podprogramov.
- Typ záznamu na úrovni databázy možno deklarovať aj pre stĺpce tabuľky, aby jeden stĺpec pojal komplexné údaje.
- K údajom v tomto dátovom type je možné získať prístup k odkazom na ich názov_ premennej, za ktorým nasleduje operátor obdobia (.), Za ktorým nasleduje názov_sloupca, tj.
Syntax vyhlásenia na úrovni databázy:
CREATE TYPEIS RECORD( ,);
V prvej syntaxi vidíme kľúčové slovo „CREATE TYPE“, ktoré dáva kompilátoru pokyn, aby vytvoril typ záznamu s názvom „type_name_db“ so zadaným stĺpcom ako databázovým objektom.
Uvádza sa to ako individuálny príkaz a nie v rámci žiadneho bloku.
Syntax vyhlásenia na úrovni podprogramu:
DECLARETYPEIS RECORD( ,);BEGIN ;END;
V syntaxi vytvárame typ záznamu s názvom „type_name“ iba vo vnútri podprogramu.
V oboch deklaračných metódach je spôsob definovania stĺpca a dátového typu podobný.
Príklad 1: Typ RECORD ako databázový objekt
V tomto programe sa pozrieme na to, ako vytvoriť „typ záznamu“ ako databázový objekt. Chystáme sa vytvoriť typ záznamu „emp_det“ so štyrmi stĺpcami. Stĺpce a ich údajový typ sú nasledujúce:
- EMP_NO (NUMBER)
- EMP_NAME (VARCHAR2 (150))
- SPRÁVCA (ČÍSLO)
- PLATBA (ČÍSLO)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/Výkon:
Type created
Vysvetlenie kódu:
- Vyššie uvedený kód vytvorí typ emp_det ako databázový objekt.
- Bude mať 4 stĺpce emp_no, emp_name, manažér a plat, ako sú definované.
- Teraz je „emp_det“ podobný inému dátovému typu (napríklad NUMBER, VARCHAR @ atď.) A je viditeľný v celej databáze. Toto je teda možné použiť v celej databáze na vyhlásenie premennej tohto typu.
Výkon:
Bol vytvorený typ 'emp_det' ako typ záznamu na úrovni databázy.
Príklad 2: Typ záznamu na úrovni podprogramu - prístup na úrovni stĺpca
V tomto príklade sa pozrieme na to, ako vytvoriť typ záznamu na úrovni podprogramu a ako z neho vyplniť a načítať hodnoty podľa úrovne stĺpca.
Vytvoríme typ záznamu „emp_det“ na úrovni podprogramu a použijeme ho na vyplnenie a zobrazenie údajov z neho.
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ýkon:
Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000
Vysvetlenie kódu:
- Riadok kódu 2-8 : Typ záznamu „emp_det“ je deklarovaný so stĺpcami emp_no, emp_name, plat a správca údajového typu NUMBER, VARCHAR2, NUMBER, NUMBER.
- Riadok kódu 9: Premenná guru99_emp_rec je deklarovaná ako dátový typ „emp_det“. Teraz môže táto premenná obsahovať hodnotu, ktorá obsahuje všetky vyššie uvedené 4 polia / stĺpce.
- Riadok kódu 11: Vyplnenie poľa „emp_no“ v poli „guru99_emp_rec“ hodnotou 1001.
- Riadok kódu 12: Vyplnenie poľa 'emp_name' v 'guru99_emp_rec' hodnotou XXX.
- Riadok kódu 13: Vyplnenie poľa „manažér“ v poli „guru99_emp_rec“ hodnotou 1000.
- Riadok kódu 14: Vyplnenie poľa „plat“ v položke „guru99_emp_rec“ hodnotou 10 000.
- Riadok kódu 15-19: Zobrazenie hodnoty parametra 'guru99_emp_rec' na výstupe.
Príklad 3: Typ záznamu na úrovni podprogramu - prístup na úrovni riadkov
V tomto príklade sa dozvieme, ako vytvoriť typ záznamu na úrovni podprogramu a ako ho vyplniť ako úroveň riadku. Vytvoríme typ záznamu „emp_det“ na úrovni podprogramu a použijeme ho na vyplnenie a zobrazenie údajov z neho.
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;/
Vysvetlenie kódu:
- Riadok kódu 2-8 : Typ záznamu „emp_det“ je deklarovaný so stĺpcami emp_no, emp_name, plat a správca údajového typu NUMBER, VARCHAR2, NUMBER, NUMBER.
- Riadok kódu 9: Premenná guru99_emp_rec je deklarovaná ako dátový typ „emp_det“. Teraz môže táto premenná obsahovať hodnotu, ktorá obsahuje všetky vyššie uvedené 4 polia / stĺpce.
- Riadok kódu 11: Vyplnenie tabuľky emp údajmi 1002 ako emp_no, YYY ako emp_name, 15000 ako plat a 1000 ako číslo manažéra.
- Riadok kódu 12: Zaviazanie vyššie uvedenej transakcie vloženia.
- Riadok kódu 13: Vyplnenie premennej „guru99_emp_rec“ ako údajov na úrovni riadku z výberového dotazu pre zamestnanca číslo 1002.
- Riadok kódu 15-19: Zobrazenie hodnoty parametra 'guru99_emp_rec' na výstupe.
Výkon:
Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000
Poznámka: K typu záznamu je prístupný iba na úrovni stĺpca pri presmerovaní jeho hodnoty do ľubovoľného výstupného režimu.