„Oracle PL / SQL Records Type“ su pavyzdžiais

Turinys:

Anonim

Kas yra įrašo tipas?

Įrašo tipas yra sudėtingas duomenų tipas, leidžiantis programuotojui sukurti naują duomenų tipą su norima stulpelių struktūra.

  • Jis sugrupuoja vieną ar daugiau stulpelių, kad suformuotų naują duomenų tipą
  • Šie stulpeliai turės savo pavadinimą ir duomenų tipą
  • Įrašo tipas gali priimti duomenis
    • Kaip vieną įrašą, kurį sudaro daug stulpelių ARBA
    • Jis gali priimti vieno konkretaus įrašo stulpelio vertę
  • Įrašo tipas paprasčiausiai reiškia naują duomenų tipą. Sukūrus įrašo tipą, jis bus saugomas kaip naujas duomenų tipas duomenų bazėje ir tas pats bus naudojamas deklaruojant kintamąjį programose.
  • Jis naudos raktinį žodį „TYPE“, kad nurodytų kompiliatoriui, kad jis kuria naują duomenų tipą.
  • Jis gali būti sukurtas „ duomenų bazės lygiu“, kuris gali būti saugomas kaip duomenų bazės objektai, naudojamas visoje duomenų bazėje, arba jį galima sukurti „ paprogramių lygmenyse“ , kuris matomas tik paprogramių viduje.
  • Duomenų bazės lygio įrašo tipą taip pat galima deklaruoti lentelės stulpeliams, kad viename stulpelyje būtų sudėtingi duomenys.
  • Šio tipo duomenis galima pasiekti nurodant jų kintamąjį_vardą, po kurio nurodomas laikotarpio operatorius (.), Po kurio pateikiamas stulpelio_pavadinimas, ty „<įrašo_tipo_kintamojo_vardas>.

Deklaravimo sintaksė duomenų bazės lygiu:

CREATE TYPE  IS RECORD( ,);

Pirmojoje sintaksėje galime pamatyti raktinį žodį „CREATE TYPE“, kuris nurodo kompiliatoriui sukurti įrašo tipą pavadinimu „type_name_db“ su nurodytu stulpeliu kaip duomenų bazės objektą.

Tai pateikiama kaip atskiras sakinys, o ne bet kokio bloko viduje.

Deklaravimo sintaksė paprogramės lygiu:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

Sintaksėje įrašo tipą, pavadintą „type_name“, kuriame tik paprogramės viduje.

Abiem deklaravimo būdais stulpelio ir duomenų tipo apibrėžimo būdas yra panašus.

1 pavyzdys: ĮRAŠO tipas kaip duomenų bazės objektas

Šioje programoje pamatysime, kaip sukurti „Įrašo tipą“ kaip duomenų bazės objektą. Mes ketiname sukurti įrašo tipą „emp_det“ su keturiais stulpeliais. Stulpeliai ir jų duomenų tipas yra šie:

  • EMP_NO (NUMBER)
  • „EMP_NAME“ („VARCHAR2“ (150))
  • VADYBININKAS (NUMERIS)
  • ALGA (NUMBER)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/
Išvestis:
Type created

Kodo paaiškinimas:

  • Minėtas kodas sukurs tipą emp_det kaip duomenų bazės objektą.
  • Jame bus 4 stulpeliai emp_no, emp_name, vadovas ir atlyginimas, kaip apibrėžta.
  • Dabar „emp_det“ yra panašus į kitus duomenų tipus (pvz., NUMBER, VARCHAR @ ir kt.). Jis matomas visoje duomenų bazėje. Taigi tai galima naudoti visoje duomenų bazėje deklaruojant šio tipo kintamąjį.

Išvestis:

Sukūrė „emp_det“ tipą kaip įrašo tipą duomenų bazės lygiu.

2 pavyzdys: Įrašo tipas paprogramės lygyje - prieiga prie stulpelio lygio

Šiame pavyzdyje mes pamatysime, kaip sukurti įrašo tipą paprogramės lygiu ir kaip iš jo užpildyti ir gauti vertes pagal stulpelių lygį.

Mes sukursime „emp_det“ įrašo tipą paprogramės lygyje ir naudosime tą patį, kad užpildytume ir rodytume iš jo gautus duomenis.

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;/

Išvestis:

Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000

Kodo paaiškinimas:

  • 2–8 kodo eilutė : įrašo tipas „emp_det“ deklaruojamas su stulpeliais emp_no, emp_name, alga ir duomenų tipo NUMBER, VARCHAR2, NUMBER, NUMBER valdytoju.
  • 9 kodo eilutė: kintamasis guru99_emp_rec deklaruojamas kaip „emp_det“ duomenų tipas. Dabar šis kintamasis gali laikyti vertę, kurioje yra visi aukščiau nurodyti 4 laukai / stulpeliai.
  • 11 kodo eilutė: užpildykite „guru99_emp_rec“ lauką „emp_no“, kurio vertė yra 1001.
  • 12 kodo eilutė: „guru99_emp_rec“ lauko „emp_name“ užpildymas reikšme XXX.
  • Kodo 13 eilutė: „guru99_emp_rec“ laukelio „manager“ užpildymas, kurio vertė 1000.
  • Kodo 14 eilutė: užpildykite „guru99_emp_rec“ lauką „atlyginimas“, kurio vertė yra 10000.
  • Kodo eilutė 15–19: „guru99_emp_rec“ vertės rodymas išvestyje.

3 pavyzdys: įrašo tipas prieigai prie paprogramės lygio - eilutės lygio

Šiame pavyzdyje mes pamatysime, kaip sukurti įrašo tipą paprogramės lygiu ir kaip jį užpildyti kaip eilutės lygį. Mes sukursime „emp_det“ įrašo tipą paprogramės lygyje ir naudosime tą patį, kad užpildytume ir rodytume iš jo gautus duomenis.

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;/

Kodo paaiškinimas:

  • 2–8 kodo eilutė : įrašo tipas „emp_det“ deklaruojamas su stulpeliais emp_no, emp_name, alga ir duomenų tipo NUMBER, VARCHAR2, NUMBER, NUMBER valdytoju.
  • 9 kodo eilutė: kintamasis guru99_emp_rec deklaruojamas kaip „emp_det“ duomenų tipas. Dabar šis kintamasis gali laikyti vertę, kurioje yra visi aukščiau nurodyti 4 laukai / stulpeliai.
  • 11 kodo eilutė: užpildykite lentelės „emp“ duomenis 1002 kaip „emp_no“, „YYY“ kaip „emp_name“, 15000 kaip atlyginimą ir „1000“ kaip vadybininko numerį.
  • 12 kodo eilutė: įvykdoma aukščiau nurodyta įterpimo operacija.
  • 13 kodo eilutė: „Guru99_emp_rec“ kintamojo užpildymas kaip eilutės lygio duomenys iš darbuotojo numerio 1002 pasirinktos užklausos.
  • Kodo eilutė 15–19: „guru99_emp_rec“ vertės rodymas išvestyje.

Išvestis:

Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000

Pastaba: Įrašo tipą galima pasiekti tik stulpelio lygiu, nukreipiant jo vertę į bet kurį išvesties režimą.