PL /SQL Object Oriented

PL /SQL lar definere en objekttype, som bidrar i utformingen av objektorientert database i Oracle. En objekttype tillater deg å kasse sammensatte typer. Bruke objekter tillate deg å gjennomføre reelle objekter med spesielle strukturen i data og metoder for å drive det. Objekter har attributter og metoder. Attributtene er egenskapene til et objekt og er brukt til lagring av et objekts tilstand; og metoder brukes for å modellere sine atferd.

Objekter er skapt ved hjelp av CREATE [OR REPLACE] TYPE uttalelse. Nedenfor er et eksempel å lage en enkel adresse
objekt som består av noen få attributter:
CREATE OR REPLACE TYPE adresse AS OBJEKT (house_no varchar2 (10), street varchar2 (30), city varchar2 (20), state varchar2 (10), pinkode varchar2 (10)); /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Type opprettet

La oss lage ett objekt . Kundeanmeldelser hvor vi vil vikle attributter Hotell og metoder
sammen for å ha objektorientert følelsen:
CREATE OR REPLACE TYPE kunde AS OBJEKT (kodenummer (5), navn varchar2 ( 30), contact_no varchar2 (12), adr adresse, medlem prosedyre display); /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Type opprettet
Instantiating et objekt <. br>

Definere en objekttype gir en blåkopi for objektet. For å bruke dette objektet, må du opprette forekomster av dette objektet. Du får tilgang til attributter og metoder av objektet ved hjelp av forekomstnavnet og tilgangen operatør
som følger:
ERKLÆRER bostedsadresse; BEGIN bosted: (.) ​​= Adresse ('103A', 'MGRoad ',' Jaipur ',' Rajasthan ',' 201301 '); dbms_output.put_line ('House No:' || residence.house_no); dbms_output.put_line ('Street:' || residence.street); dbms_output.put_line ('City:' || residence.city); dbms_output.put_line ('State:' || residence.state); dbms_output.put_line ('Pinkode:' || residence.pincode); END; /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
House Ingen: 103AStreet: MGRoadCity: JaipurState: RajasthanPincode:. 201301PL /SQL-prosedyren ble fullført
Medlems Metoder

Medlems metoder
brukes for å manipulere attributter
av objektet. Du gir erklæringen av et medlem metode mens erklære objekttypen. Objektet kroppen definerer koden for medlems metoder. Objektet Kroppen er skapt ved hjelp av CREATE TYPE BODY uttalelse.

Constructors
er funksjoner som returnerer et nytt objekt som verdi. Hvert objekt har et system definert konstruktør metode. Navnet på konstruktøren er samme som objekttypen. For eksempel:
bosted: = adresse ('103A', 'MGRoad', 'Jaipur', 'Rajasthan', '201301');

sammenligning metoder
brukes for å sammenligne objekter . Det er to måter å sammenligne objekter:

Kart metode Bilde: Kart metode
er en funksjon implementert på en slik måte at verdien avhenger av verdien av attributtene. For eksempel, for en kunde objekt, hvis kunden koden er den samme for to kunder, både kunder kan være det samme og en. Så forholdet mellom disse to stedene vil avhenge av verdien av kode

Bestill metode Bilde:. Bestill metoder
gjennomføre noen interne logikk for sammenligne to stedene. For eksempel, for et rektangel objekt, er et rektangel større enn en annen rektangel hvis begge sidene er større.

Bruke Map metode

La oss prøve å forstå ovenfor begreper ved hjelp av følgende rektangel objekt:
CREATE OR REPLACE TYPE rektangel AS OBJEKT (lengde antall, bredde nummer, medlem funksjon større bilde (inc nummer) avkastning rektangel, medlem prosedyre skjerm, kart medlem funksjon tiltaket returnummer); /

Når ovennevnte koden kjøres på SQL teksten, gir det følgende resultat:.
Type opprettet

Opprette type kropp:
CREATE OR REPLACE TYPE BODY rektangel AS medlem funksjon større bilde (inc nummer) avkastning rektangel IS BEGIN returnere rektangel (self.length + inc, self.width + mva); END enlarge; MEDLEMS PROSEDYRE skjerm IS BEGIN dbms_output.put_line ('Lengde:' || lengde); dbms_output.put_line ('Bredde:' || bredde); END display; MAP medlem funksjon tiltaket returnummer IS BEGIN avkastning (sqrt (lengde * lengde + bredde * bredde)); END tiltaket; END; /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Type kroppen skapt

Nå bruker rektangelet objektet og dets medlemsfunksjoner:
ERKLÆRER r1. rektangel; r2 rektangel; r3 rektangel; inc_factor Nummer: = 5; BEGIN r1: = rektangel (3, 4); r2: = rektangel (5, 7); R3: = r1.enlarge (inc_factor); r3.display; IF (r1> R2) da - som kaller tiltaket funksjon r1.display; ELSE r2.display; END IF; END; /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Lengde: 8Width: 9Length: 5Width: 7PL /SQL-prosedyren ble fullført
Bruke Bestill metode <. br>

Nå kan samme effekt oppnås ved å bruke en For
metode
. La oss gjenskape rektangel objekt med en ordre metode:
CREATE OR REPLACE TYPE rektangel AS OBJEKT (lengde antall, bredde nummer, medlem prosedyre display, orden medlem funksjon tiltaket (r rektangel) returnummer); /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Type opprettet

Opprette type kropp.
CREATE OR REPLACE TYPE BODY rektangel som medlem PROSEDYRE skjermen er BEGIN dbms_output.put_line ('Lengde: '|| lengde); dbms_output.put_line ('Bredde:' || bredde); END display; ORDRE medlem funksjon tiltaket (r rektangel) returnummer IS BEGIN IF (sqrt (self.length * self.length + self.width * self.width) > sqrt (r.length * r.length + r.width * r. bredde)) og deretter gå tilbake (1); ELSE retur (-1); END IF; END tiltaket; END; /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Type kroppen skapt

Ved hjelp av rektangelet objektet og dets medlemsfunksjoner:
ERKLÆRER r1 rektangel.; r2 rektangel, BEGIN r1: = rektangel (23, 44); r2: = rektangel (15, 17); r1.display; r2.display; IF (r1> R2) da - som kaller tiltaket funksjon r1.display; ELSE r2.display; END IF; END; /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:.
Lengde: 23Width: 44Length: 15Width: 17Length: 23Width: 44PL /SQL-prosedyren ble fullført
Arv for PL /SQL-objekter:

PL /SQL lar skape objekt fra eksisterende basis stedene. Å implementere arv, bør base objektene bli erklært som ikke endelig. Standard er FINAL.

Følgende programmer illustrere arv i PL /SQL-objekter. La oss skape et annet objekt som heter TableTop, som er arvet fra rektangel objekt. Opprette basen rektangel
objekt:
CREATE OR REPLACE TYPE rektangel AS OBJEKT (lengde antall, bredde nummer, medlem funksjon større bilde (inc nummer) avkastning rektangel, IKKE ENDELIG medlem prosedyre display) IKKE ENDELIG /

Når ovennevnte koden kjøres på SQL teksten, gir det følgende resultat:
Type opprettet

Opprette basen type kropp.
CREATE OR REPLACE TYPE BODY rektangel AS medlem funksjon større bilde (inc nummer) retur rektangel IS BEGIN retur rektangel (self.length + inc, self.width inc +); END enlarge; MEDLEMS PROSEDYRE skjerm IS BEGIN dbms_output.put_line ('Lengde:' || lengde); dbms_output.put_line ('Bredde:' || bredde); END skjerm, END, /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Type kroppen skapt

Opprette barnet objekt tabletop Bilde:
. . CREATE OR REPLACE TYPE tabletop UNDER rektangel (material varchar2 (20), overordnet medlem prosedyre visning) /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Type opprettet

Opprette skriv kroppen for barnet objekt tabletop Bilde:
CREATE OR REPLACE TYPE BODY tabletop ASOVERRIDING MEDLEM PROSEDYRE skjerm ISBEGIN dbms_output.put_line ('Lengde:' || lengde); dbms_output.put_line ('Bredde:' || bredde); dbms_output.put_line ('Materiale:' || materiale); END display; /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Type kroppen skapt

Bruke tabletop
protestere og medlemsfunksjoner:
ERKLÆRER t1 tabletop; t2 tabletop; BEGIN t1: = tabletop (20, 10, 'Wood'); t2: = tabletop (50, 30, 'Steel'); t1.display; t2.display; END; /

Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Lengde: 20Width: 10Material: WoodLength: 50Width: 30Material: SteelPL /SQL-prosedyren ble fullført Abstract Objekter i PL /SQL

IKKE en forekomst av klausulen gjør at du kan erklære en abstrakt objekt. Du kan ikke bruke et abstrakt objekt som det er; du må lage en subtype eller barnet type slike gjenstander for å bruke sine funksjoner.

For eksempel, etter CREATE OR REPLACE TYPE rektangel AS OBJEKT (lengde antall, bredde nummer, ikke en forekomst av ikke endelig MEDLEM PROSEDYRE display) IKKE en forekomst IKKE ENDELIG /

Når ovenfor koden kjøres på SQL prompt, produserer det følgende resultat:
Type opprettet.