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