Typ záznamov Oracle PL / SQL s príkladmi

Obsah:

Anonim

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

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