Oracle PL / SQL Records Type példákkal

Tartalomjegyzék:

Anonim

Mi az a rekordtípus?

A rekordtípus egy összetett adattípus, amely lehetővé teszi a programozó számára, hogy új adattípust hozzon létre a kívánt oszlopszerkezettel.

  • Egy vagy több oszlopot csoportosít egy új adattípus kialakításához
  • Ezeknek az oszlopoknak saját neve és adattípusa lesz
  • A rekord típus elfogadhatja az adatokat
    • Egyetlen rekordként, amely sok oszlopból áll OR
    • El tudja fogadni a rekord egy adott oszlopának értékét
  • A rekordtípus egyszerűen új adattípust jelent. A rekordtípus létrehozása után új adattípusként kerül tárolásra az adatbázisban, és ugyanezt kell használni egy változó deklarálására a programokban.
  • A „TYPE” kulcsszóval utasítja a fordítót arra, hogy létrehozza az új adattípust.
  • Létrehozható " adatbázis szinten", amely adatbázis objektumokként tárolható, az egész adatbázisban felhasználható, vagy létrehozható az " alprogram szintjén" , amely csak az alprogramokon belül látható.
  • Az adatbázis szintű rekordtípus deklarálható a táblaoszlopokra is, így egyetlen oszlop tárolhatja az összetett adatokat.
  • Az ezen adattípusba tartozó adatok a változó_nevükre hivatkozva érhetők el, amelyet a periódus operátor (.) Követ, majd az oszlop_név, azaz a „.

Szintaxis a deklaráció adatbázis szintjén:

CREATE TYPE  IS RECORD( ,);

Az első szintaxisban láthatjuk a "CREATE TYPE" kulcsszót, amely utasítja a fordítót, hogy hozza létre a "type_name_db" nevű rekordtípust a megadott oszloppal adatbázis objektumként.

Ezt egyedi utasításként adjuk meg, és nem egy blokkon belül.

Szintaxis a deklarációhoz alprogram szinten:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

A szintaxisban a "type_name" nevű rekordtípust csak az alprogramon belül hozzuk létre.

Mindkét deklarációs módszerben az oszlop és az adattípus meghatározásának módja hasonló.

1. példa: RECORD típus, mint adatbázis objektum

Ebben a programban azt fogjuk látni, hogyan lehet létrehozni a "Rekord típusát" adatbázis-objektumként. Négy oszloppal létrehozzuk az 'emp_det' rekordtípust. Az oszlopok és adattípusaik a következők:

  • EMP_NO (NUMBER)
  • EMP_NAME (VARCHAR2 (150))
  • KEZELŐ (SZÁM)
  • FÉL (SZÁM)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/
Kimenet:
Type created

Kód Magyarázat:

  • A fenti kód létrehozza az emp_det típust adatbázis objektumként.
  • 4 oszlopa lesz emp_no, emp_name, menedzser és fizetés a definiált módon.
  • Most az 'emp_det' hasonló más adattípusokhoz (például NUMBER, VARCHAR @ stb.), És az egész adatbázisban látható. Ezért ezt az egész adatbázisban fel lehet használni az ilyen típusú változó deklarálására.

Kimenet:

Létrehozta az 'emp_det' típust rekordtípusként az adatbázis szintjén.

2. példa: Rekordtípus alprogram szintjén - Oszlopszintű hozzáférés

Ebben a példában azt fogjuk megtudni, hogyan hozhatunk létre egy rekordtípust alprogram szintjén, és hogyan tölthetjük fel és hozhatjuk le belőle az értékeket oszlopszintenként.

Az 'emp_det' rekord_típust az alprogram szintjén fogjuk létrehozni, és ugyanezt fogjuk használni az adatok feltöltésére és megjelenítésére.

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

Kimenet:

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

Kód Magyarázat:

  • 2-8 . Kódsor: Az „emp_det” rekordtípus deklarálva van az emp_no, emp_name, fizetés és a NUMBER, VARCHAR2, NUMBER, NUMBER adattípus kezelőivel.
  • 9. kódsor : A guru99_emp_rec változót 'emp_det' adattípusként deklarálják. Most ez a változó megtarthatja azt az értéket, amely a fenti 4 mezőt / oszlopot tartalmazza.
  • 11. kódsor : A „guru99_emp_rec” 'emp_no' mezőjének kitöltése 1001 értékkel.
  • 12. kódsor : A „guru99_emp_rec” 'emp_name' mezőjének kitöltése XXX értékkel.
  • 13. kódsor: A „guru99_emp_rec” „manager” mezőjének kitöltése 1000 értékkel.
  • 14. kódsor: A „guru99_emp_rec” „fizetés” mezőjének kitöltése 10000 értékkel.
  • 15-19 kódsor: A 'guru99_emp_rec' értékének megjelenítése a kimenetben.

3. példa: Rekord típusa alprogram szint-sor szintű hozzáférésnél

Ebben a példában azt fogjuk megtudni, hogyan hozhatunk létre egy rekordtípust alprogram szintjén, és hogyan töltsük fel sorszintként. Az 'emp_det' rekord_típust az alprogram szintjén fogjuk létrehozni, és ugyanezt fogjuk használni az adatok feltöltésére és megjelenítésére.

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

Kód Magyarázat:

  • 2-8 . Kódsor: Az „emp_det” rekordtípus deklarálva van az emp_no, emp_name, fizetés és a NUMBER, VARCHAR2, NUMBER, NUMBER adattípus kezelőivel.
  • 9. kódsor : A guru99_emp_rec változót 'emp_det' adattípusként deklarálják. Most ez a változó megtarthatja azt az értéket, amely a fenti 4 mezőt / oszlopot tartalmazza.
  • 11. kódsor: Töltse fel a tábla emp-t az 1002-es adatokkal emp_no, YYY mint emp_name, 15000 mint fizetés és 1000 mint manager számok.
  • 12. kódsor : A fenti beillesztési tranzakció végrehajtása.
  • 13. kódsor : A 'guru99_emp_rec' változó kitöltése sorszintű adatokként az 1002 alkalmazott kiválasztási lekérdezéséből.
  • 15-19 kódsor: A 'guru99_emp_rec' értékének megjelenítése a kimenetben.

Kimenet:

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

Megjegyzés: A rekordtípus csak oszlopszinten érhető el, miközben az értékét bármely kimeneti módba átirányítja.