Oracle PL/SQL-kirjete tüüp koos näidetega

Mis on kirje tüüp?

Kirjetüüp on keeruline andmetüüp, mis võimaldab programmeerijal luua soovitud veerustruktuuriga uue andmetüübi.

  • See rühmitab ühe või mitu veergu uue andmetüübi moodustamiseks
  • Nendel veergudel on oma nimi ja andmetüüp
  • Kirjetüüp võib andmeid vastu võtta
    • Ühe kirjena, mis koosneb paljudest veergudest VÕI
    • See võib aktsepteerida kirje ühe konkreetse veeru väärtust
  • Kirje tüüp tähendab lihtsalt uut andmetüüpi. Kui kirjetüüp on loodud, salvestatakse see andmebaasi uue andmetüübina ja seda kasutatakse programmides muutuja deklareerimiseks.
  • See kasutab märksõna 'TYPE' juhendada kompilaatorit, et ta loob uut andmetüüpi.
  • Selle saab luua aadressil "andmebaasi tase” mida saab salvestada andmebaasiobjektidena, kasutada kogu andmebaasis või luua selle "alamprogrammi tasemed”, mis on nähtav ainult alamprogrammide sees.
  • Andmebaasi taseme kirjetüübi saab deklareerida ka tabeli veergude jaoks, nii et üks veerg mahutab keerukaid andmeid.
  • Nende andmetüüpide andmetele pääseb juurde, viidates nende muutuja_nimi, millele järgneb perioodi operaator (.), millele järgneb veeru_nimi, st ' . '

Deklaratsiooni süntaks andmebaasi tasemel:

Oracle PL/SQL-kirjete tüüp

CREATE TYPE <type_name_db> IS RECORD
(
<column 1> <datatype>,
);

Esimeses süntaksis näeme märksõna 'CREATE TYPE', mis annab kompilaatorile käsu luua kirjetüüp nimega "type_name_db" koos määratud veeruga andmebaasiobjektina.

See esitatakse üksiklausena ja mitte ühegi ploki sees.

Alamprogrammi tasemel deklaratsiooni süntaks:

Oracle PL/SQL-kirjete tüüp

DECLARE
TYPE <type_name> IS RECORD
(
<columnl> <datatype>,
);
BEGIN
<execution_section>;
END;

Süntaksis loome kirjetüübi nimega “type_name” ainult alamprogrammi sees.

Mõlema deklareerimismeetodi puhul on veeru ja andmetüübi määratlemise viis sarnane.

Näide 1: Kirje tüüp andmebaasiobjektina

Selles programmis näeme, kuidas luua andmebaasiobjektina kirje tüüp. Loome nelja veeruga kirjetüübi 'emp_det'. Veerud ja nende andmetüübid on järgmised:

  • EMP_NO (NUMBER)
  • EMP_NAME (VARCHAR2 (150))
  • JUHT (NUMBER)
  • PALK (NUMBER)
CREATE TYPE emp_det IS OBJECT
(
EMP_NO NUMBER,
EMP_NAME VARCHAR2(150),
MANAGER NUMBER,
SALARY NUMBER 
);
/

Väljund:

Type created

Koodi selgitus:

  • Ülaltoodud kood loob andmebaasiobjektina tüübi emp_det.
  • Sellel on 4 veergu emp_no, emp_name, manager ja palk, nagu on määratletud.
  • Nüüd on 'emp_det' sarnane teistele andmetüüp (nagu NUMBER, VARCHAR@ jne) Ja see on nähtav kogu andmebaasis. Seega saab seda kasutada seda tüüpi muutuja deklareerimiseks kogu andmebaasis.

Väljund:

Loodud andmebaasi tasemel kirjetüübina tüüp 'emp_det'.

Näide 2: Kirje tüüp alamprogrammi tasemel – juurdepääs veeru tasemel

Selles näites näeme, kuidas luua kirjetüüpi alamprogrammi tasemel ning kuidas täita ja tuua sellelt väärtusi veerutaseme järgi.

Loome 'emp_det' record_type'i alamprogrammi tasemel ja kasutame seda andmete täitmiseks ja kuvamiseks.

Oracle PL/SQL-kirjete tüüp

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER, 
EMP_NAME VARCHAR2(150),
MANAGER NUMBER, 
SALARY NUMBER
);
guru99_emp_rec emp_det;
BEGIN
guru99_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äljund:

Employee Detail
Employee Number: 1001
Employee Name: XXX
Employee Salary: 10000 
Employee Manager Number: 1000

Koodi selgitus:

  • Koodirida 2-8: Kirje tüüp 'emp_det' on deklareeritud veergudega emp_no, emp_name, palk ja andmetüübi NUMBER, VARCHAR2, NUMBER, NUMBER haldur.
  • Koodirida 9: guru99_emp_rec muutuja deklareeritakse andmetüübina 'emp_det'. Nüüd see muutuja võib sisaldada väärtust, mis sisaldab kõiki ülaltoodud 4 välja/veergu.
  • Koodirida 11: Välja 'emp_no' täitmine 'guru99_emp_rec' väärtusega 1001.
  • Koodirida 12: Välja 'emp_name' täitmine 'guru99_emp_rec' väärtusega XXX.
  • Koodirida 13: Välja 'haldur' täitmine 'guru99_emp_rec' väärtusega 1000.
  • Koodirida 14: Täitke välja 'palk' väärtusega 99 väärtusega 'guru10000_emp_rec'.
  • Koodirida 15–19: Väljundis 'guru99_emp_rec' väärtuse kuvamine.

Näide 3: Kirje tüüp alamprogrammi tasemel – reataseme juurdepääs

Selles näites näeme, kuidas luua kirjetüüpi alamprogrammi tasemel ja kuidas seda rea ​​tasemel täita. Loome 'emp_det' record_type'i alamprogrammi tasemel ja kasutame seda andmete täitmiseks ja kuvamiseks.

Oracle PL/SQL-kirjete tüüp

DECLARE
TYPE emp_det IS RECORD
(
EMP_NO NUMBER,
EMP_NAME YARCHAR2( 150),
MANAGER NUMBER,
SALARY NUMBER
);
guru99_emp_rec emp_det;
BEGIN
INSERT 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;
/

Koodi selgitus:

  • Koodirida 2-8: Kirje tüüp 'emp_det' on deklareeritud veergudega emp_no, emp_name, palk ja andmetüübi NUMBER, VARCHAR2, NUMBER, NUMBER haldur.
  • Koodirida 9: guru99_emp_rec muutuja deklareeritakse andmetüübina 'emp_det'. Nüüd võib see muutuja sisaldada väärtust, mis sisaldab kõiki ülaltoodud 4 välja/veergu.
  • Koodirida 11: Tabeli emp täitmine andmetega 1002 kui emp_no, YYY kui emp_name, 15000 kui palk ja 1000 kui juhi number.
  • Koodirida 12: Ülaltoodud sisestustehingu sooritamine.
  • Koodirida 13: Muutuja „guru99_emp_rec” täitmine reataseme andmetena töötaja numbri 1002 valikupäringust.
  • Koodirida 15–19: Väljundis 'guru99_emp_rec' väärtuse kuvamine.

Väljund:

Employee Detail 
Employee Number: 1002 
Employee Name: YYY 
Employee Salary: 1000 
Employee Manager Number: 15000

Märge: Kirjetüübile pääseb juurde ainult veeru tasemel, suunates selle väärtuse ümber mis tahes väljundrežiimi.