Oracle PL / SQL Records Type med eksempler

Innholdsfortegnelse:

Anonim

Hva er platetype?

En posttype er en kompleks datatype som lar programmereren lage en ny datatype med ønsket kolonnestruktur.

  • Den grupperer en eller flere kolonner for å danne en ny datatype
  • Disse kolonnene vil ha sitt eget navn og datatype
  • En posttype kan godta dataene
    • Som en enkelt plate som består av mange kolonner ELLER
    • Den kan akseptere verdien for en bestemt kolonne i en post
  • Posttype betyr ganske enkelt en ny datatype. Når posttypen er opprettet, lagres den som en ny datatype i databasen, og den samme skal brukes til å erklære en variabel i programmer.
  • Den vil bruke nøkkelordet 'TYPE' for å instruere kompilatoren om at den lager den nye datatypen.
  • Den kan opprettes på " databasenivå" som kan lagres som databaseobjekter, brukes over hele databasen, eller den kan opprettes på " underprogramnivåene" , som bare er synlig i underprogrammene.
  • Datatype-posttypen kan også deklareres for tabellkolonnene, slik at enkeltkolonne kan inneholde de komplekse dataene.
  • Dataene i denne datatypen kan nås ved å referere til deres variabelnavn etterfulgt av periodeoperatør (.) Etterfulgt av kolonnenavn, dvs. '.

Syntaks for erklæring på databasenivå:

CREATE TYPE  IS RECORD( ,);

I den første syntaksen kan vi se nøkkelordet 'OPPRETT TYPE' dette instruerer kompilatoren om å opprette platetypen med navnet "type_name_db" med den angitte kolonnen som et databaseobjekt.

Dette er gitt som en individuell uttalelse og ikke inne i noen blokk.

Syntaks for erklæring på underprogramnivå:

DECLARETYPE  IS RECORD( ,);BEGIN;END;

I syntaksen lager vi platetypen med navnet "type_name" bare inne i underprogrammet.

I begge deklarasjonsmetoden er måten å definere kolonnen og datatypen på, lik.

Eksempel 1: OPPTAK Skriv inn som databaseobjekt

I dette programmet skal vi se hvordan du lager "Record type" som et databaseobjekt. Vi skal lage platetype 'emp_det' med fire kolonner. Kolonnene og deres datatype er som følger:

  • EMP_NO (NUMBER)
  • EMP_NAME (VARCHAR2 (150))
  • Leder (NUMMER)
  • LØNN (NUMMER)
CREATE TYPE emp_det IS OBJECT(EMP_NO NUMBER,EMP_NAME VARCHAR2(150),MANAGER NUMBER,SALARY NUMBER);/
Produksjon:
Type created

Kode Forklaring:

  • Ovennevnte kode vil opprette typen emp_det som et databaseobjekt.
  • Den vil ha 4 kolonner emp_no, emp_name, manager og lønn som definert.
  • Nå ligner 'emp_det' annen datatype (som NUMBER, VARCHAR @ osv.) Og den er synlig i hele databasen. Derfor kan dette brukes i hele databasen for å erklære variabelen av denne typen.

Produksjon:

Opprettet typen 'emp_det' som posttype på databasenivå.

Eksempel 2: Posttype på underprogramnivå - Kolonnivå tilgang

I dette eksemplet skal vi se hvordan du lager en posttype på underprogramnivå og hvordan du fyller ut og henter verdiene fra den etter kolonnivå.

Vi skal lage 'emp_det' record_type på underprogramnivå, og vi skal bruke det samme til å fylle ut 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;/

Produksjon:

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

Kode Forklaring:

  • Kodelinje 2-8 : Posttype 'emp_det' er erklært med kolonner emp_no, emp_name, lønn og manager for datatypen NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Kodelinje 9: variabelen guru99_emp_rec er erklært som 'emp_det' datatype. Nå kan denne variabelen inneholde verdien som inneholder alle de ovennevnte 4 feltene / kolonnene.
  • Kodelinje 11: Fyll ut 'emp_no' -feltet til 'guru99_emp_rec' med verdien 1001.
  • Kodelinje 12: Fyll ut 'emp_name' -feltet til 'guru99_emp_rec' med verdien XXX.
  • Kodelinje 13: Fyll ut 'manager' -feltet til 'guru99_emp_rec' med verdien 1000.
  • Kodelinje 14: Fyll ut 'lønnsfeltet til' guru99_emp_rec 'med verdi 10000.
  • Kodelinje 15-19: Viser verdien av 'guru99_emp_rec' i utdata.

Eksempel 3: Record Type på Subprogram level-Row level access

I dette eksemplet skal vi se hvordan du lager en posttype på underprogramnivå og hvordan du fyller den ut som et radnivå. Vi skal lage 'emp_det' record_type på underprogramnivå, og vi skal bruke det samme til å fylle ut 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 : Posttype 'emp_det' er erklært med kolonner emp_no, emp_name, lønn og manager for datatypen NUMBER, VARCHAR2, NUMBER, NUMBER.
  • Kodelinje 9: variabelen guru99_emp_rec er erklært som 'emp_det' datatype. Nå kan denne variabelen inneholde verdien som inneholder alle de ovennevnte 4 feltene / kolonnene.
  • Kodelinje 11: Fyll ut tabellen emp med data 1002 som emp_no, YYY som emp_name, 15000 som lønn og 1000 som ledernummer.
  • Kodelinje 12: Foreta ovennevnte innskuddstransaksjon.
  • Kodelinje 13: Fyll ut variabelen 'guru99_emp_rec' som data på radnivå fra utvalgsspørringen for ansatt nummer 1002.
  • Kodelinje 15-19: Viser verdien av 'guru99_emp_rec' i utdata.

Produksjon:

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

Merk: Du kan bare få tilgang til posttypen på kolonnivå mens du omdirigerer verdien til hvilken som helst utgangsmodus.