Hvad er Record Type?
En posttype er en kompleks datatype, der gør det muligt for programmøren at oprette en ny datatype med den ønskede kolonnestruktur.
- Den grupperer en eller flere kolonner for at danne en ny datatype
- Disse kolonner har sit eget navn og datatype
- En posttype kan acceptere dataene
- Som en enkelt post, der består af mange kolonner ELLER
- Det kan acceptere værdien for en bestemt kolonne i en post
- Posttype betyder simpelthen en ny datatype. Når posttypen er oprettet, gemmes den som en ny datatype i databasen, og den samme skal bruges til at erklære en variabel i programmer.
- Det bruger nøgleordet 'TYPE' til at instruere kompilatoren om, at den opretter den nye datatype.
- Det kan oprettes på " databaseniveau", som kan gemmes som databaseobjekter, bruges overalt i databasen, eller det kan oprettes på " underprogramniveauer" , som kun er synligt inde i underprogrammerne.
- Datatype-recordtypen kan også deklareres for tabelskolonnerne, så enkeltkolonnen kan indeholde de komplekse data.
- Dataene i denne datatype kan tilgås ved at henvise til deres variabelnavn efterfulgt af periodeoperator (.) Efterfulgt af kolonnenavn, dvs. '
. '
Syntaks til erklæring på databaseniveau:
CREATE TYPEIS RECORD( ,);
I den første syntaks kan vi se nøgleordet 'CREATE TYPE', som instruerer kompilatoren om at oprette posttypen med navnet "type_name_db" med den angivne kolonne som et databaseobjekt.
Dette gives som en individuel erklæring og ikke inde i en blok.
Syntaks til erklæring på underprogramniveau:
DECLARETYPEIS RECORD( ,);BEGIN ;END;
I syntaksen opretter vi kun posttypen med navnet "type_name" inde i underprogrammet.
I begge erklæringsmetoder ligner måden at definere kolonnen og datatypen på.
Eksempel 1: RECORD Skriv som databaseobjekt
I dette program skal vi se, hvordan man opretter "Record type" som et databaseobjekt. Vi skal oprette posttype 'emp_det' med fire kolonner. Kolonnerne og deres datatype er som følger:
- EMP_NO (NUMBER)
- EMP_NAME (VARCHAR2 (150))
- MANAGER (NUMMER)
- LØN (NUMMER)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/Produktion:
Type created
Kode Forklaring:
- Ovenstående kode opretter typen emp_det som et databaseobjekt.
- Det vil have 4 kolonner emp_no, emp_name, manager og løn som defineret.
- Nu ligner 'emp_det' andre datatyper (som NUMBER, VARCHAR @ osv.) Og det er synligt i hele databasen. Derfor kan dette bruges i hele databasen til at erklære variablen af denne type.
Produktion:
Oprettet typen 'emp_det' som posttype på databaseniveau.
Eksempel 2: Optagetype på underprogramniveau - adgang til søjleniveau
I dette eksempel skal vi se, hvordan man opretter en posttype på underprogramniveau, og hvordan man udfylder og henter værdierne fra den efter søjleniveau.
Vi skal oprette 'emp_det' record_type på underprogramniveau, og vi skal bruge det samme til at udfylde og vise data fra det.
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;/
Produktion:
Employee DetailEmployee Number: 1001Employee Name: XXXEmployee Salary: 10000Employee Manager Number: 1000
Kode Forklaring:
- Kodelinje 2-8 : Registreringstype 'emp_det' erklæres med kolonner emp_no, emp_name, løn og manager af datatypen NUMBER, VARCHAR2, NUMBER, NUMBER.
- Kodelinje 9: variablen guru99_emp_rec erklæres som 'emp_det' datatype. Nu kan denne variabel indeholde den værdi, der indeholder alle de ovennævnte 4 felter / kolonner.
- Kodelinje 11: Udfyld feltet 'emp_no' i 'guru99_emp_rec' med værdien 1001.
- Kodelinje 12: Udfyld feltet 'emp_name' i 'guru99_emp_rec' med værdien XXX.
- Kodelinje 13: Udfyld feltet 'manager' i 'guru99_emp_rec' med værdien 1000.
- Kodelinje 14: Udfyld feltet 'løn' i 'guru99_emp_rec' med værdi 10000.
- Kodelinje 15-19: Viser værdien af 'guru99_emp_rec' i output.
Eksempel 3: Optagelsestype på adgang til underprogramniveau-række niveau
I dette eksempel skal vi se, hvordan man opretter en posttype på underprogramniveau, og hvordan man udfylder den som et rækkeniveau. Vi skal oprette 'emp_det' record_type på underprogramniveau, og vi skal bruge det samme til at udfylde og vise data fra det.
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;/
Kode Forklaring:
- Kodelinje 2-8 : Registreringstype 'emp_det' erklæres med kolonner emp_no, emp_name, løn og manager af datatypen NUMBER, VARCHAR2, NUMBER, NUMBER.
- Kodelinje 9: variablen guru99_emp_rec erklæres som 'emp_det' datatype. Nu kan denne variabel indeholde den værdi, der indeholder alle de ovennævnte 4 felter / kolonner.
- Kodelinje 11: Udfyld tabellen emp med data 1002 som emp_no, YYY som emp_name, 15000 som løn og 1000 som manager nummer.
- Kodelinje 12: Foretagelse af ovenstående indsættetransaktion.
- Kodelinje 13: Udfyld variablen 'guru99_emp_rec' som data på række niveau fra den valgte forespørgsel for medarbejdernummer 1002.
- Kodelinje 15-19: Viser værdien af 'guru99_emp_rec' i output.
Produktion:
Employee DetailEmployee Number: 1002Employee Name: YYYEmployee Salary: 1000Employee Manager Number: 15000
Bemærk: Der er kun adgang til posttypen på søjleniveau, mens dens omdirigering omdirigeres til enhver outputtilstand.