Oracle PL/SQL rekordok típusa példákkal

Mi az a rekord tí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, hogy új adattípust hozzon létre
  • Ezeknek az oszlopoknak saját neve és adattípusa lesz
  • A Rekord típus képes fogadni az adatokat
    • Egyetlen rekordként, amely több oszlopból áll VAGY
    • 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 kulcsszót fogja használni 'TÍPUS' hogy utasítsa a fordítót, hogy az új adattípust hozza létre.
  • Létrehozható a „adatbázis szint” amely adatbázis-objektumként tárolható, az egész adatbázisban használható, vagy létrehozható a „alprogram szintek”, ami csak az alprogramokon belül látható.
  • Az adatbázis szintű rekordtípus a tábla oszlopaihoz is deklarálható, így egyetlen oszlopban tárolhatók az összetett adatok.
  • Az ebben az adattípusban lévő adatok a változó_nevükre hivatkozva érhetők el, ezt követi a pont operátor (.), majd az oszlopnév, azaz ' . '

Az adatbázis szintű deklaráció szintaxisa:

Oracle PL/SQL rekordok típusa

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

Az első szintaxisban a 'CREATE TYPE' kulcsszó látható, amely arra 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 nyilatkozatként adjuk meg, és nem blokkon belül.

Alprogram szintű deklaráció szintaxisa:

Oracle PL/SQL rekordok típusa

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

A szintaxisban csak az alprogramon belül hozzuk létre a „type_name” rekordtípust.

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

1. példa: RECORD típusa adatbázis-objektumként

Ebben a programban látni fogjuk, hogyan hozhatunk létre „Rekordtípust” adatbázis-objektumként. Létrehozzuk az 'emp_det' rekordtípust négy oszloppal. Az oszlopok és adattípusuk a következő:

  • EMP_NO (NUMBER)
  • EMP_NAME (VARCHAR2 (150))
  • VEZETŐ (SZÁM)
  • BÉR (SZÁM)
CREATE TYPE emp_det IS OBJECT
(
EMP_NO NUMBER,
EMP_NAME VARCHAR2(150),
MANAGER NUMBER,
SALARY NUMBER 
);
/

output:

Type created

Kód magyarázata:

  • A fenti kód létrehozza az emp_det típust adatbázis-objektumként.
  • 4 oszlopos emp_no, emp_name, manager és fizetés lesz a definíció szerint.
  • Most az 'emp_det' hasonló a többihez adattípus (pl. NUMBER, VARCHAR@ stb.) És a teljes adatbázisban látható. Ezért ez a teljes adatbázisban használható az ilyen típusú változó deklarálására.

output:

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

2. példa: Rekordtípus alprogram szinten – Oszlop szintű hozzáférés

Ebben a példában látni fogjuk, hogyan lehet rekordtípust létrehozni alprogram szinten, és hogyan lehet az értékeket oszlop szinten kitölteni és lekérni belőle.

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

Oracle PL/SQL rekordok típusa

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

output:

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

Kód magyarázata:

  • Kódsor 2-8: Az 'emp_det' rekordtípus az emp_no, emp_name, fizetés és a NUMBER, VARCHAR2, NUMBER, NUMBER adattípus kezelője oszlopokkal van deklarálva.
  • 9. kódsor: A guru99_emp_rec változó 'emp_det' adattípusként van deklarálva. Most ezt változó tartalmazhatja azt az értéket, amely mind a fenti 4 mezőt/oszlopot tartalmazza.
  • 11. kódsor: A 'guru99_emp_rec' 'emp_no' mezőjének kitöltése 1001-es é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 feltöltése 1000-es é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: Rekordtípus alprogram szinten – sor szintű hozzáférés

Ebben a példában látni fogjuk, hogyan hozhatunk létre egy rekordtípust alprogram szinten, és hogyan tölthetjük fel sor szinten. Az 'emp_det' rekord_típust alprogram szinten fogjuk létrehozni, és ugyanezt fogjuk használni az adatok kitöltésére és megjelenítésére.

Oracle PL/SQL rekordok típusa

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

Kód magyarázata:

  • Kódsor 2-8: Az 'emp_det' rekordtípus az emp_no, emp_name, fizetés és a NUMBER, VARCHAR2, NUMBER, NUMBER adattípus kezelője oszlopokkal van deklarálva.
  • 9. kódsor: A guru99_emp_rec változó 'emp_det' adattípusként van deklarálva. Most ez a változó tartalmazza azt az értéket, amely mind a fenti 4 mezőt/oszlopot tartalmazza.
  • 11. kódsor: Az emp tábla feltöltése az 1002-es adatokkal, mint emp_no, YYY mint emp_name, 15000 mint fizetés és 1000 mint vezetői szám.
  • 12. kódsor: A fenti beillesztési tranzakció végrehajtása.
  • 13. kódsor: A 'guru99_emp_rec' változó kitöltése sorszintű adatként az 1002-es számú 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.

output:

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

Jegyzet: A rekordtípus csak oszlopszinten érhető el, miközben értéke bármilyen kimeneti módba átirányítható.