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:
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:
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.
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.
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.