PL /SQL programmeringsspråk ble utviklet av Oracle Corporation i slutten av 1980 som prosedyre forlengelse språk for SQL og Oracle relasjonsdatabase. Følgende er bemerkelsesverdige fakta om PL /SQL:
PL /SQL er en helt bærbar, høy ytelse transaksjonsprosessering språk
PL /SQL gir. en innebygd tolket og OS uavhengig programmeringsmiljø.
PL /SQL kan også direkte kalles fra kommandolinjen SQL * Plus grensesnitt.
Direkte samtale kan også gjøres fra eksterne programmeringsspråk samtaler til databasen.
PL /SQL generelle syntaksen er basert på at av ADA og Pascal programmeringsspråk.
Bortsett fra Oracle, er PL /SQL tilgjengelig i . TimesTen in-memory database og IBM DB2
PL /SQL - Miljø Setup
PL /SQL er ikke et frittstående programmeringsspråk; Det er et verktøy i Oracle programmeringsmiljøet. SQL * Plus er et interaktivt verktøy som lar deg skrive SQL og PL /SQL-setninger ved ledeteksten. Disse kommandoer blir så sendt til databasen for behandling. Når uttalelsene er behandlet, blir resultatene sendt tilbake og vises på skjermen.
For å kjøre PL /SQL-programmer, bør du ha Oracle RBDMS Server installert på maskinen din som vil ta seg av å utføre SQL-kommandoer. Nyeste versjonen av Oracle RDBMS er 11g. Du kan laste ned en prøveversjon av Oracle 11g fra følgende link:
Last ned Oracle 11g Express Edition
Du må laste ned enten 32bit eller 64 bit versjon av installasjonen som per ditt operativsystem . Vanligvis er det to filer, som jeg har lastet ned for 64 bit Windows7. Du vil også bruke tilsvarende trinn av operativsystemet, spiller ingen rolle om det er Linux eller Solaris.
win64_11gR2_database_1of2.zip
win64_11gR2_database_2of2.zip
After laster ned over to filer, må du pakke dem i en enkelt katalog database Anmeldelser og under at du vil finne følgende underkataloger: største nettstedene slutt klikker du på setup Anmeldelser filen for å starte installasjonen og følg de gitte trinn til slutten. Hvis alt har blitt gjort med hell deretter sin tid for å kontrollere installasjonen. På bruke ledeteksten følgende kommando hvis du bruker Windows:
sqlplus "/som SYSDBA"
Hvis alt er i orden, bør du ha SQL teksten der du vil skrive dine PL /SQL-kommandoer og skript:
Text Editor
Kjøre store programmer fra kommandolinjen kan lande deg i utilsiktet å miste noe av arbeidet. Så et bedre alternativ er å bruke kommandofiler. Slik bruker du kommandofiler:
Skriv inn koden din i et tekstredigeringsprogram, for eksempel Notisblokk, Notepad +, eller EditPlus, etc.
Lagre filen med sql forlengelse i hjemmekatalogen.
Launch SQL * Plus ledeteksten fra katalogen der du opprettet PL /SQL-fil.
Skrivfile_name på SQL * Plus ledetekst for å kjøre programmet.
Hvis du ikke bruker en fil for å utføre PL /SQL-skript, så bare kopiere PL /SQL-kode og deretter høyreklikk på det sorte vinduet ha SQL rask og bruke lim
muligheten til å lime inn hele koden ved ledeteksten. Til slutt, bare trykk enter for å utføre koden, hvis det ikke allerede er utført
PL /SQL -. Basic Syntax
PL /SQL er en blokk strukturert språk, noe som betyr at PL /SQL Programmene er delt og skrevet i logiske blokker av kode. Hver blokk består av tre underdeler:
SN
en Erklæringer
Denne delen starter med søkeordet ERKLÆRER
. Det er en valgfri del og definerer alle variabler, pekere, underprogrammer og andre elementer som skal brukes i programmet.
2 Kjørbar Kommandoer
Denne delen er vedlagt mellom søkeordene BEGIN Hotell og END Hotell og det er en obligatorisk del. Den består av de kjør PL /SQL-setninger i programmet. Det bør ha minst én kjørbar linje med kode, som kan være bare en NULL kommando for å vise at ingenting skulle bli henrettet.
3 Unntak håndtering
Denne delen starter med søkeordet UNNTAK
. Denne delen er igjen valgfritt og inneholder unntak (e) som håndterer feil i programmet
Hver PL /SQL-setning avsluttes med et semikolon . (;)
. PL /SQL-blokker kan nestes innenfor andre PL /SQL blokker ved hjelp av BEGIN Hotell og END
. Her er den grunnleggende strukturen i en PL /SQL blokk:
ERKLÆRER < erklæringer delen > BEGIN < kjørbar kommando (s) > UNNTAK < unntakshåndtering > END;
The 'Hello World' Eksempel:
ERKLÆRER melding varchar2 (20): = '! Hello, World'; BEGIN dbms_output.put_line (melding), END; /
end;
linje signaliserer slutten av PL /SQL blokk . Å kjøre kode fra SQL kommandolinjen, kan det hende du må skrive /
ved begynnelsen av den første blank linje etter siste linje av koden. Når ovennevnte koden kjøres på SQL teksten, produserer det følgende resultat:
Hei WorldPL /SQL-prosedyren ble fullført PL /SQL - datatyper
PL /SQL-variabler, konstanter og parametre må. har en gyldig datatype som angir et lagringsformat, begrensninger, og gyldig verdiområde. Denne opplæringen vil ta deg gjennom SCALAR Hotell og LOB
typer data tilgjengelig i PL /SQL og to andre datatyper vil bli dekket i andre kapitler.
Kategori
ScalarSingle verdier med ingen interne komponenter, for eksempel et nummer, dato, eller BOOLEAN.Large Object (LOB) Pekere til store objekter som er lagret separat fra andre dataelementer, for eksempel tekst, grafiske bilder, videoklipp, og lyd bølgeformer. CompositeData elementer som har interne komponenter som kan nås individuelt. For eksempel, samlinger og poster. ReferencePointers til andre dataelementer
PL /SQL Scalar datatyper og Subtyper
PL /SQL Skalar datatyper og Subtyper kommer inn under følgende kategorier:.
Dato Type
NumericNumeric verdiene som aritmetiske operasjoner er performed.CharacterAlphanumeric verdier som representerer enkelttegn eller strenger av characters.BooleanLogical verdiene som logiske operasjoner utføres. DatetimeDates og tider.
PL /SQL gir subtyper av datatyper. For eksempel har datatypen NUMBER en subtype kalt heltall. Du kan bruke undertyper i PL /SQL-programmet for å gjøre datatyper som er kompatible med datatyper i andre programmer mens embedding PL /SQL-kode i et annet program, for eksempel et Java-program.
PL /SQL Numerisk datatyper og Subtyper
Følgende er detaljene i PL /SQL forhåndsdefinerte typer numeriske data og deres undertyper:
Datatype
PLS_INTEGERSigned heltall innenfor rekkevidde -2,147,483,648 gjennom 2147483647, representert i 32 bitsBINARY_INTEGERSigned heltall innenfor rekkevidde -2,147,483,648 gjennom 2147483647, representert i 32 bitsBINARY_FLOATSingle presisjon IEEE 754-format flyttalls numberBINARY_DOUBLEDouble presisjon IEEE 754-format flyttalls numberNUMBER (prec, skala) fast punkt eller flyttall nummer med absoluttverdi i serien 1E-130 til (men ikke inkludert) 1.0E126. ET NUMMER variabel kan også representere 0.DEC (prec, skala) ANSI bestemt fast punkt type med maksimal presisjon på 38 desimal digits.DECIMAL (prec, skala) IBM bestemt fast punkt type med maksimal presisjon på 38 desimal digits.NUMERIC ( pre, secale) Flytende type med maksimal presisjon på 38 desimal digits.DOUBLE PRECISIONANSI bestemt flyt type med maksimal presisjon av 126 binære siffer (ca. 38 desimale sifre) FLOATANSI og IBM bestemt flyttalls type med maksimal presisjon av 126 binære siffer ( ca 38 desimalar) INTANSI bestemt heltall type med maksimal presisjon på 38 desimal digitsINTEGERANSI og IBM bestemt heltall type med maksimal presisjon på 38 desimal digitsSMALLINTANSI og IBM bestemt heltall type med maksimal presisjon på 38 desimal digitsREALFloating-punkts type med maksimal presisjon på 63 binære siffer (ca 18 desimalar)
Følgende er et gyldig erklæring:
ERKLÆRER num1 INTEGER; num2 REAL; num3 dobbel presisjon; BEGIN null; END; /
Når koden ovenfor er kompilert og henrettet, gir det følgende resultat:
PL /SQL-prosedyren ble fullført
PL /SQL Character datatyper og Subtyper
Følgende er detaljene i PL /SQL forhåndsdefinerte datategntyper og deres undertyper:
Datatype
CHARFixed lengde tegnstreng med maksimal størrelse på 32 767 bytesVARCHAR2Variable -Lengde tegnstreng med maksimal størrelse på 32 767 bytesRAWVariable-lengde binær eller byte streng med maksimal størrelse på 32,767 bytes, ikke kan tolkes av PL /SQLNCHARFixed lengde nasjonale tegnstreng med maksimal størrelse på 32 767 bytesNVARCHAR2Variable lengde nasjonale tegnstreng med maksimal størrelse på 32 767 bytesLONGVariable lengde tegnstreng med maksimal størrelse på 32 760 bytesLONG RAWVariable lengde binær eller byte streng med maksimal størrelse på 32,760 bytes, ikke kan tolkes av PL /SQLROWIDPhysical rad identifikator, adressen til en rad i en vanlig tableUROWIDUniversal rad identifikator (fysisk, logisk, eller utenlandsk rad identifikator)
PL /SQL boolsk datatyper
boolsk
data type butikker logiske verdier som brukes i logiske operasjoner. De logiske verdiene er de boolske verdiene sant og usant, og verdien NULL.
Men, har SQL ingen datatype tilsvarer BOOLEAN. Derfor kan boolske verdier ikke brukes i:
SQL-setninger
Innebygd SQL-funksjoner (for eksempel TO_CHAR)
PL /SQL-funksjoner som påberopes fra SQL-setninger
PL /SQL Datetime og intervall Typer
DATE
datatype til å lagre fast- lengde datetimes, som inkluderer den tiden av dagen i sekunder siden midnatt. Gyldige datoer spenner fra 1. januar 4712 BC til 31. desember 9999 AD.
Standard datoformat er satt av Oracle initialisering parameter NLS_DATE_FORMAT. For eksempel kan standard være "DD-Man-YY", som inkluderer en to-sifret nummer for den dagen i måneden, en forkortelse av måneden navn, og de to siste sifrene i årstallet, for eksempel 01- OKT-12.
Hver DATE inkluderer tallet, år, måned, dag, time, minutt og sekund. Tabellen nedenfor viser de gyldige verdiene for hvert felt:
Feltnavn
Valid Interval ValuesYEAR-4712-9999 (unntatt år 0) Enhver null integerMONTH01 til 120 til 11DAY01 til 31 ( begrenset av verdiene for måned og år, i henhold til reglene i kalenderen for den locale) Enhver null integerHOUR00 til 230 til 23MINUTE00 til 590 til 59SECOND00 til 59,9 (n), hvor 9 (n) er presisjonen tid brøk seconds0 til 59,9 (n), hvor 9 (n) er presisjonen i intervallet brøk secondsTIMEZONE_HOUR-12 til 14 (range plass til sommertid og vintertid) Ikke applicableTIMEZONE_MINUTE00 til 59Not applicableTIMEZONE_REGIONFound i den dynamiske ytelsen utsikt V $ TIMEZONE_NAMESNot applicableTIMEZONE_ABBRFound i den dynamiske ytelsen visning V $ TIMEZONE_NAMESNot aktuelt
PL /SQL stort objekt (LOB) datatyper
Stor objekt (LOB) datatyper referere stor til dataelementer som tekst, grafiske bilder, videoklipp og lyd bølgeformer. LOB datatyper tillate effektiv, tilfeldig, stykkevis tilgang til disse dataene. Følgende er de forhåndsdefinerte PL /SQL LOB datatyper:
Datatype
SizeBFILEUsed å lagre store binære objekter i operativsystemfiler utenfor database.System avhengig. Kan ikke overstige 4 gigabyte (GB) .BLOBUsed å lagre store binære objekter i database.8 128 terabyte (TB) CLOBUsed å lagre store datablokker tegn i database.8 til 128 TBNCLOBUsed å lagre store blokker av nchar data i database.8 til 128 TB
PL /SQL brukerdefinerte Subtyper
En subtype er en undergruppe av en annen datatype, som er kalt sin base type. En subtype har de samme gyldige operasjoner som sin base type, men bare en undergruppe av sine gyldige verdier.
PL /SQL forhåndsdefinerer flere undergrupper i pakken STANDARD. For eksempel, PL /SQL forhåndsdefinerer subtyper karakter og INTEGER som følger:
SUBTYPE karakter er CHAR; SUBTYPE heltall NUMMER (38,0);
Du kan definere og bruke dine egne undergrupper. Følgende program viser definere og bruke en brukerdefinert subtype:
ERKLÆRER SUBTYPE navn er char (20); SUBTYPE melding ER varchar2 (100); hilsen navn; hilsener melding; BEGIN hilsen: = 'Reader'; hilsener: = 'Velkommen til World of PL /SQL'; dbms_output.put_line ('Hello' || hilsen || hilsener), END; /
Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Hei Reader Velkommen til World of PL /SQLPL /SQL-prosedyren ble fullført.
NULL i PL /SQL
PL /SQL NULL verdier representerer manglende eller ukjente data, og de er ikke et heltall, et tegn, eller noen annen bestemt datatype. Legg merke til at NULL er ikke det samme som en tom datastreng eller nulltegnet verdien '\\ 0'. En null kan tildeles, men det kan ikke sammenlignes med noe, inkludert seg selv.
PL /SQL - Variabler
Navnet på en PL /SQL variabel består av et brev eventuelt etterfulgt av flere bokstaver, tall, dollartegn, understreker, og talltegn og bør ikke overstige 30 karakterer. Som standard variabelnavn er ikke store og små bokstaver. Du kan ikke bruke en reservert PL /SQL søkeord som variabelnavn.
Variable Erklæring i PL /SQL
PL /SQL-variabler må deklareres i erklæringen seksjon eller i en pakke som et globalt variabel. Når du deklarerer en variabel, PL /SQL allokerer minne for variabelens verdi og lagringssted er identifisert av variabelnavnet
Syntaksen for å erklære en variabel er.
VARIABLE_NAME [KONSTANT] datatype [NOT NULL] [: = | STANDARD initial_value]
Hvor, VARIABLE_NAME
er en gyldig identifikator i PL /SQL, datatype
må være en gyldig PL /SQL-datatypen eller en brukerdefinert datatype som vi allerede har diskutert i forrige kapittel. Noen gyldige variabeldeklarasjoner sammen med deres definisjon er vist nedenfor:
salg nummer (10, 2); pi KONSTANT dobbel presisjon: = 3,1415; navn varchar2 (25), adresse varchar2 (100);
Når du gir en størrelse, skala eller presisjon grense med datatypen, kalles det en begrenset erklæring
. Begrenset erklæringer krever mindre minne enn ubegrensede erklæringer. For eksempel:
salg nummer (10, 2); navn varchar2 (25), adresse varchar2 (100);
Initial Variabler i PL /SQL
Når du deklarerer en variabel, PL /SQL tildeler den en standardverdi på NULL. Hvis du ønsker å klargjøre en variabel med en annen enn den NULL verdi verdi, kan du gjøre det i løpet av erklæringen, enten ved hjelp av følgende:
STANDARD
søkeord
oppdrag
operatør
For eksempel:
teller binary_integer: = 0; hilsener varchar2 (20) STANDARD ' Ha en god dag ';
Du kan også angi at en variabel ikke bør ha en NULL
verdi ved hjelp av NOT NULL
begrensningen. Hvis du bruker NOT NULL begrensningen, må du eksplisitt tilordne en startverdi for den variabelen.
Det er en god programmering praksis å initial variabler riktig, ellers ville en gang programmet produsere uventet resultat. Prøv følgende eksempel som gjør bruk av ulike typer variabler:
erklære et heltall: = 10; b heltall: = 20; c heltall; f real; BEGIN c: = a + b; dbms_output.put_line ('Verdien av c:' || c); f: = 70,0 /3,0; dbms_output.put_line ('Verdien av f:' || f); END; /
Når koden ovenfor er utført, gir det følgende resultat:
verdi av c: 30Value av f: 23.333333333333333333PL /SQL prosedyre fullført.
Variable Scope i PL /SQL
PL /SQL tillater hekke av blokker, dvs. kan hvert program blokk inneholde en annen indre blokk. Hvis en variabel er deklarert i et indre blokk, er det ikke tilgjengelig for den ytre blokken. Men hvis en variabel er deklarert og tilgjengelig for en ytre Block, er det også tilgjengelig for alle nestet indre Blocks. Det finnes to typer av variable omfang.
Lokale variabler Z - variabler deklarert i en indre blokk og ikke tilgjengelig for ytre blokker
Globale variabler Z - variabler deklarert i det ytterste blokk eller en pakke.
Følgende eksempel viser bruken av Lokal Hotell og Globale
variabler i sin enkle form: Anmeldelser erklære - Globale variabler num1 nummer: = 95; num2 Nummer: = 85; BEGIN dbms_output.put_line ('Ytre Variabel num1:' || num1); dbms_output.put_line ('Ytre Variabel num2:' || num2); ERKLÆRER - Lokale variabler num1 Nummer: = 195; num2 Nummer: = 185; BEGIN dbms_output.put_line ('Indre Variabel num1:' || num1); dbms_output.put_line ('Indre Variabel num2:' || num2); SLUTT; END; /
Når koden ovenfor er utført, gir det følgende resultat:
Ytre Variabel num1: 95Outer Variabel num2: 85Inner Variabel num1: 195Inner Variabel num2: 185PL /SQL-prosedyren ble fullført
PL /. SQL - Konstanter og Literaler
En konstant har en verdi som en gang erklært, endrer ikke på programmet. En konstant erklæring presiserer sitt navn, datatype og verdi, og tildeler lagringsplass for det. Erklæringen kan også pålegge NOT NULL begrensningen.
Erklærte en Constant
En konstant er deklarert med KONSTANT søkeord. Det krever en startverdi, og tillater ikke at verdien skal endres. For eksempel:
PI konstant antall: = 3,141592654; DECLARE - konstant erklæring pi konstant antall: = 3,141592654; - Andre erklæringer radius tall (5,2); dia tall (5,2); omkrets nummer (7, 2); område nummer (10, 2); BEGIN - bearbeiding radius: = 9.5; dia: = radius * 2; omkrets: = 2,0 * pi * radius; Areal: = pi * radius * radius; - Output dbms_output.put_line ('Radius:' || radius); dbms_output.put_line ('Diameter:' || dia); dbms_output.put_line ('Omkrets:' || omkrets); dbms_output.put_line ('Areal:' || område); END; /
Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Radius: 9.5Diameter: 19Circumference: 59.69Area: 283.53Pl /SQL-prosedyren ble fullført.
PL /SQL Literaler
En bokstavelig er en eksplisitt numerisk, karakter, streng, eller boolsk verdi ikke representert med en identifikator. For eksempel TRUE, 786, NULL, 'tutorialspoint' er alle konstanter av typen boolsk, nummer eller streng. PL /SQL, konstanter er store og små bokstaver. PL /SQL støtter følgende typer litteraler:
Tall Literaler
Tegn Literaler
strenger < .no>
boolsk Literaler
Dato og klokkeslett Literaler
Tabellen nedenfor gir eksempler fra alle disse kategoriene av bokstavelige verdier
Literal Type
Numeric Literals050 78 -14 0 32 767
6,6667 0,0 -12,0 3,14159 7800,00
6E5 1.0e-8 3.14159e0 -1E38 -9.5e-3Character Literals'A ''% '' 9 '' '' z '' ('String Literals'Hello, verden!'
'Guider Point'
'19 -NOV-12 '
BOOLEAN LiteralsTRUE, USANN, og NULL.Date og Time LiteralsDATE' 1978-12-25 ';
TIMESTAMP' 2012-10-29 12:01:01 ';
Hvis du vil bygge singel sitater innenfor en streng bokstavelig, plassere to apostrof ved siden av hverandre, som vist nedenfor:
ERKLÆRER melding varchar2 (20): = '' That 'er tutorialspoint.com' '; BEGIN dbms_output.put_line (melding);! END; /
Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
Det er tutorialspoint.com PL /SQL-prosedyren ble fullført
PL /SQL - Operatører
En operatør er et symbol som forteller kompilatoren til å utføre bestemte matematiske eller logiske manipulasjon. PL /SQL språket er rik på innebygde operatører og gir følgende type aktører:
Aritmetiske operatorer
Relasjonsopera
Sammenligningsoperatorer
Logiske operatorer
String operatører
Denne opplæringen vil forklare aritmetikk, relasjonelle, sammenligning og logiske operatører én etter én. Strengen operatører vil bli diskutert under kapittel:. PL /SQL - Strings
aritmetiske operatorer
Tabellen nedenfor viser alle de aritmetiske operatører som støttes av PL /SQL. Anta variabel A innehar 10 og variabel B har fem da:
Operator
Beskrivelse
+ Legger to operandsA + B vil gi 15-Subtraherer andre operanden fra første A - B vil gi 5 * Multipliserer begge operander A * B vil gi 50 /dele opp teller med de-teller A /B vil gi 2 ** Potens operatør, reiser en operand til kraften i otherA ** B vil gi 100000
Relasjonsoperators
Relasjonsoperatorer sammenligner to uttrykk eller verdier og returnerer en boolsk resultat. Tabellen nedenfor viser alle de relasjonelle operatører som støttes av PL /SQL. Anta variabel A innehar 10 og variabel B eier 20, deretter:
Operator
Beskrivelse
= Kontrollerer om verdiene av to operander er like eller ikke, hvis ja så tilstanden blir sann . (A = B) er ikke sant. ! =
< > product: ~ = Kontrollerer om verdiene av to operander er lik eller ikke, hvis verdiene ikke er like så tilstanden blir sann. (A! = B) er sant. > Sjekker om verdien av venstre operanden er større enn verdien av høyre operand, hvis ja så tilstanden blir sann. (A > B) er ikke sant. < Sjekker om verdien av venstre operanden er mindre enn verdien av høyre operand, hvis ja så tilstanden blir sann. (A < b) er sann. > = Kontrollerer om verdien av venstre operanden er større enn eller lik verdien av høyre operand, hvis ja så tilstanden blir sann. (A > = B) er ikke sant. ≪ = Kontrollerer om verdien av venstre operanden er mindre enn eller lik verdien av høyre operand, hvis ja så tilstanden blir sann. (A < = B) er sant
Sammenligning Operatører
Sammenligningsoperatorer brukes for å sammenligne ett uttrykk til en annen.. Resultatet er alltid enten SANN, USANN ELLER NULL.
Operator
Beskrivelse
likethe SOM operatør sammen et tegn, streng, eller clob verdi til et mønster og returnerer TRUE hvis verdien samsvarer med mønsteret, og USANN hvis det ikke not.If 'Zara Ali' som 'Z% A_i' returnerer en boolsk sann, mens 'nuha Ali' som 'Z% A_i' returnerer en boolsk false.BETWEENThe mellom operatør tester om en verdi ligger i et angitt område. x mellom A og B betyr at x > = en og x < = b. Hvis x = 10 da, x mellom 5 og 20 returer sanne, x mellom 5 og 10 returer sant, men x mellom 11 og 20 returer false.INThe I operatør tester satt medlemskap. x IN (sett) betyr at x er lik et medlem av settet. Hvis x = 'm' da, x i ('a', 'b', 'c') returnerer boolean false men x i ('m', 'n', 'o') returnerer boolsk true.IS NULLThe ER NULL operatøren returnerer den boolske verdien TRUE hvis operand er NULL eller USANN hvis det ikke er NULL. Sammenligninger involverer NULL verdier alltid gi NULL. Hvis x = 'm', deretter 'x er null' returnerer boolsk USANN.
logiske operatører
Tabellen nedenfor viser den logiske operatører som støttes av PL /SQL. Alle disse aktørene arbeide på boolske operander og produserer boolske resultater. Anta variabel A gjelder og variabel B holder falsk, deretter:
Operator
Beskrivelse
PL /SQL operatør presedens
Operatør forrang bestemmer grupperingen av begreper i et uttrykk. Dette påvirker hvordan et uttrykk evalueres. Enkelte operatører har høyere prioritet enn andre; for eksempel har multiplikasjon operatør høyere prioritet enn tillegg operatøren:
For eksempel x = 7 + 3 * 2; her, er x tildelt 13, ikke 20 fordi operatøren * har høyere prioritet enn +, så det første blir ganget med 3 * 2 og deretter legger inn 7.
Her operatører med høyest prioritet vises øverst bordet, de med lavest nederst. Innenfor et uttrykk, vil høyere presedens operatørene skal evalueres først
** eksponensieringen +, Identity, negasjon *, /multiplikasjon, divisjon +, -., || Tillegg subtraksjon, sammenkjedingsoperatorer =, <, >, < =, > =, <! >, =, ~ = ^ = ER
NULL, SOM, MELLOM, INcomparisonNOTlogical negationANDconjunctionORinclusion
PL /SQL - Forhold
beslutningsstrukturer krever at programmereren oppgi en eller flere vilkår som må evalueres eller testet av programmet, sammen med en uttalelse eller uttalelser om å bli henrettet hvis tilstanden er bestemt til å være sant, og eventuelt andre uttalelser å bli henrettet hvis betingelsen er fast bestemt på å være falsk.
IF-THEN Statement
Det er den enkleste formen for IF
kontroll uttalelse, ofte brukt i beslutningsprosesser og endre kontrollflyt for henrettelsen programmet.
IF-setningen
knytter en betingelse med en sekvens av utsagn omsluttet av søkeordene SÅ Hotell og END IF
. Hvis tilstanden er TRUE
, får uttalelsene henrettet, og hvis tilstanden er USANN
eller NULL
, deretter IF
uttalelse gjør ingenting .
Syntax:
Syntax for IF-THEN uttalelsen er:
IF tilstand da S; END IF;
Hvor stand
er en boolsk eller relasjonell tilstand og S
er en enkel eller sammensatt setning. Eksempel på en IF-THEN uttalelsen er:
IF (en < = 20) SÅ c: = c + 1; END IF;
Hvis boolsk uttrykk stand
evaluerer til sann, så blokken med kode inne hvis setningen vil bli henrettet. Hvis boolsk uttrykk evaluerer til false, så det første settet med kode etter slutten av hvis setningen (etter stengetid slutten hvis) vil bli utført
Flow Diagram:.
IF-da- ELSE Statement
En sekvens av IF-THEN
uttalelser kan bli etterfulgt av en valgfri sekvens av ELSE
utsagn, som utføres når betingelsen er USANN
Syntax:
Syntax for IF-THEN-ELSE uttalelsen er:
IF tilstand da S1; ELSE S2; END IF;
Hvor, S1 Hotell og S2
er forskjellig sekvens av utsagn. I IF-THEN-ELSE uttalelser, når testen stand
er TRUE, oppstilling S1
er utført og S2
er hoppet over; når testen stand
er USANN, deretter S1
er forbigått og statement S2
utføres. For eksempel, etter IF color = red SÅ dbms_output.put_line ('Du har valgt en rød bil') ELSE dbms_output.put_line ('Velg en farge for bilen din'); END IF;
Hvis boolsk uttrykk stand
evaluerer til sann, så hvis-så blokk med kode vil bli utført, ellers ellers blokk med kode vil bli henrettet
Flow Diagram:.
hvis- SÅ-ELSIF Statement
IF-THEN-ELSIF
setningen kan du velge mellom flere alternativer. En IF-THEN
uttalelsen kan bli etterfulgt av en valgfri ELSIF ... ELSE
uttalelse. ELSIF
klausulen gjør at du kan legge til flere forhold.
Når du bruker IF-THEN-ELSIF
uttalelser er det noen punkter å huske på.
Det er ELSIF, ikke AnnetHvis-
< li>
En IF-THEN-setning kan ha null eller annens, og det må komme etter noen ELSIF tallet.
En IF-THEN-setning kan ha null til mange ELSIF og de må kommer før ELSE
Når en ELSIF lykkes, vil ingen av de rester ELSIF s eller andres testes
Syntax:..
Syntaksen en IF-THEN-ELSIF Statement i PL /SQL programmeringsspråk er:
IF (boolean_expression 1) SÅ S1; - Utfører når det boolske uttrykket 1 er sann ELSIF (boolean_expression 2) SÅ S2; - Utfører når det boolske uttrykket to er sant ELSIF (boolean_expression 3) SÅ S3; - Utfører når det boolske uttrykket tre er sant ELSE S4; - Utfører når ingen av de ovennevnte betingelsen er sann END IF;
CASE Statement
I likhet med IF
uttalelse, CASE statement
velger en sekvens av uttalelser å utføre. Men å velge rekkefølgen, bruker CASE
statement en velger i stedet for flere boolske uttrykk. En velgeren er et uttrykk, der verdien brukes til å velge ett av flere alternativer
Syntax.
Syntaksen for saken statement i PL /SQL er:
CASE velger NÅR 'verdi1 'SÅ S1; NÅR 'verdi2' THEN S2; NÅR 'basis3' THEN S3; ... ELSE Sn; - Standard caseEND CASE;
Flow Diagram:
Søkte CASE Statement
søkte CASE
uttalelsen har ingen velger og dets Når
klausuler inneholder søkebetingelser som gir boolske verdier
Syntax:
Syntaksen for søkte tilfelle uttalelse i PL /SQL er:.
tilfelle når velger = 'verdi1' THEN S1; NÅR velger = 'verdi2' THEN S2; NÅR velger = 'basis3' THEN S3; ... ELSE Sn; - Standard caseEND CASE;
Flow Diagram:
Nøstet IF-THEN-ELSE Statements
Det er alltid lovlig i PL /SQL-programmering for å hekke IF-ELSE
uttalelser, noe som betyr at du kan bruke en IF
eller ELSE IF
uttalelse inne i en annen IF
eller ELSE IF
uttalelse (s).
Syntax:
IF (boolean_expression 1) SÅ - utfører når det boolske uttrykket 1 er sann IF (boolean_expression 2) SÅ - utfører når det boolske uttrykket to er sant sekvens-of-uttalelser; END IF; ELSE - eksekverer når boolsk uttrykk en ikke er sant Else-uttalelser; END IF; PL /SQL - Loops
Det kan være en situasjon når du trenger å utføre en blokk med kode flere antall ganger. Generelt er uttalelser utføres i rekkefølge: Den første setningen i en funksjon utføres først, etterfulgt av den andre, og så videre
Programmeringsspråk gi ulike kontrollstrukturer som gir mulighet for mer kompliserte kjøring stier
..
En sløyfe uttalelse tillater oss å utføre en uttalelse eller gruppe av utsagn flere ganger, og følgende er den generelle form av en sløyfe uttalelse i de fleste programmeringsspråk:
Basic Loop erklæringen
Basic løkke struktur omslutter sekvens av utsagn i mellom LOOP Hotell og END LOOP
uttalelser. Med hver iterasjon, er sekvensen av uttalelser henrettet og deretter kontrollere CVer på toppen av loopen
Syntax.
Syntaksen til en grunnleggende sløyfe i PL /SQL programmeringsspråk er:
LOOP Sekvens av utsagn; END LOOP;
Her sekvens av utsagn (e) kan være et enkelt utsagn eller en blokk av utsagn. En EXIT utsagn eller en EXIT NÅR uttalelse er nødvendig for å bryte sløyfen.
mens loop Erklæring
En mens loop
uttalelse i PL /SQL programmeringsspråk utfører gjentatte ganger et mål uttalelse så lenge en gitt betingelse er sann.
Syntax:
MENS tilstand LOOP sequence_of_statementsEND LOOP; FOR LOOP erklæringen
En FOR LOOP
er en repetisjon kontrollstruktur som lar deg effektivt skrive en loop som må utføre et bestemt antall ganger
Syntax.
FOR telleren i initial_value .. final_value LOOP sequence_of_statements; END LOOP;
Følgende er noen spesielle kjennetegn ved PL /SQL for loop:
initial_value Hotell og final_value
av løkken variabel eller teller
kan være Literaler, variabler eller uttrykk, men må vurdere til tall. Ellers PL /SQL hever den forhåndsdefinerte unntak VALUE_ERROR.
initial_value
trenger ikke å være en; må imidlertid løkke teller økning (eller minsk) være en
.
PL /SQL kan bestemme sløyfe utvalg dynamisk under kjøring.
Nøstet Loops
PL /SQL kan ved hjelp av en sløyfe inne i en annen loop. Følgende avsnitt viser noen eksempler for å illustrere konseptet
Syntaksen for en nestet grunn LOOP uttalelse i PL /SQL er som følger:.
LOOP Sekvens av statements1 LOOP Sekvens av statements2 END LOOP; END LOOP; < p> Syntaksen for en nestet FOR LOOP uttalelse i PL /SQL er som følger:
FOR Counter1 I initial_value1 .. final_value1 LOOP sequence_of_statements1 FOR counter2 I initial_value2 .. final_value2 LOOP sequence_of_statements2 END LOOP; END LOOP;
syntaks for en nestet mens loop uttalelse i Pascal er som følger:
MENS Condition1 LOOP sequence_of_statements1 MENS Condition2 LOOP sequence_of_statements2 END LOOP; END LOOP;
EXIT erklæringen
EXIT
uttalelse i PL /SQL programmeringsspråk har følgende to bruksområder.
Når EXIT uttalelsen er oppstått inne i en loop, er løkken avbrytes umiddelbart program kontroll gjenopptas ved neste setningen som følger etter løkken
Hvis du bruker nøstede løkker (dvs. en sløyfe inne i en annen loop), vil EXIT uttalelse stoppe kjøringen av den innerste løkken og begynne å jobbe med neste kodelinje etter blokken
Syntax.
Syntaksen for en EXIT uttalelse i PL /SQL er som følger:
EXIT;
Flow Diagram:
FORTSETTE erklæringen
FORTSETTE
uttalelsen fører til at sløyfe for å hoppe over resten av kroppen sin og umiddelbart teste dens tilstand før gjentok. Med andre ord, tvinger det neste iterasjon av loopen skal skje, hopper over noen kode i mellom
Syntax.
Syntaksen for en FORTSETTE uttalelse er som følger:
FORTSETT;
Flow Diagram:
GOTO erklæringen
En GOTO
uttalelse i PL /SQL programmeringsspråk gir et ubetinget hopp fra GOTO til en merket uttalelse i samme . subprogram
NB:
Bruk av GOTO-setningen er sterkt frarådet i alle programmeringsspråk fordi det gjør vanskelig å spore kontrollflyt av et program, noe som gjør programmet vanskelig å forstå og vanskelig å endre . Ethvert program som bruker en GOTO kan omskrives slik at den ikke trenger den GOTO
Syntax.
Syntaksen for en GOTO uttalelse i PL /SQL er som følger:
GOTO etikett; .... < < label > > uttalelse;
Flow Diagram:
PL /SQL - Strings
Strengen i PL /SQL er faktisk en sekvens av tegn med en valgfri størrelse spesifikasjon. Tegnene kan være numeriske, brev, tomme, spesialtegn eller en kombinasjon av alt. PL /SQL tilbyr tre typer strenger:
Fast lengde strenger Bilde: I slike strenger, programmerere angi lengden mens erklære strengen. Strengen er rett-polstret med mellomrom til lengden så spesifisert
variabel lengde strenger Bilde:. I slike strenger, en maksimal lengde på opp til 32 767, for string er spesifisert, og ingen padding foregår
Tegn store objekter (CLOBs) Bilde:.. Disse er variabel lengde strenger som kan være opp til 128 terabytes
PL /SQL-strenger kan være enten variabler eller litteraler. En streng bokstavelig er vedlagt i anførselstegn. For eksempel, etter 'Dette er en streng bokstavelig. Eller "hello world"
Hvis du vil ta et enkelt sitat inne i en streng bokstavelig, må du skrive inn to enkle anførselstegn ved siden av hverandre, som:
"dette isn''t hvordan det ser ut som"
Erklærte String Variabler
Oracle database gir mange strengdatatyper, som, røye, nchar, VARCHAR2, NVARCHAR2, CLOB, og NCLOB. De datatyper innledes med en 'N' er 'nasjonale tegnsett' datatyper, at datalageret Unicode tegn.
Hvis du trenger å erklære en variabel lengde streng, må du gi den maksimale lengden av strengen. For eksempel, den VARCHAR2 datatype. Følgende eksempel illustrerer erklære og bruke noen strengvariabler:
ERKLÆRER navn varchar2 (20); Selskapet varchar2 (30); introduksjon clob; Valget char (1); BEGIN navn: = 'John Smith'; Selskapet: = 'Infotech'; innledning: = 'Hei! I''m John Smith fra Infotech. '; Valget: = 'y'; HVIS valg = 'y' SÅ dbms_output.put_line (navn); dbms_output.put_line (selskapet); dbms_output.put_line (introduksjon); END IF; END; /
Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
John SmithInfotech CorporationHello! Jeg er John Smith fra Infotech.PL/SQL prosedyren ble fullført
Å erklære en fast lengde streng, bruke CHAR datatype. En varray brukes til å lagre en ordnet samling av data, men det er ofte mer nyttig å tenke på en matrise som en samling av variabler av samme type.
Alle varrays bestå av sammenhengende minneplasser. Lavest adresse tilsvarer det første elementet og det høyeste adresse til det siste elementet.
En matrise er en del av samlingen typedata og det står for variabel størrelse arrays. Vi vil studere andre innsamlingstyper i et senere kapittel 'PL /SQL Samlinger'.
Hvert element i en varray har en indeks knyttet til den. Det har også en maksimal størrelse som kan endres dynamisk.
Opprette en Varray Type
En varray type er opprettet med CREATE TYPE uttalelse. Du må angi maksimal størrelse og type elementer som er lagret i varray. Forenklet syntaks for CREATE OR REPLACE PROSEDYRE utsagnet er som følger:
CREATE [OR REPLACE] funksjonen funksjons [(parameternavn [IN | OUT | IN OUT] skriver [...])] RETURN return_datatype {IS | AS} BEGIN < function_body > END [funksjonsnavn];.
Hvor, etter
funksjonsnavn
angir navnet på funksjonen
[OR REPLACE] alternativet kan modifisere en eksisterende funksjon.
Den valgparameterlisten inneholder navn, modus og typer parametere. PL /SQL styrer sammenheng området gjennom en markør. En markør holder radene (én eller flere) returnert av en SQL-setning. Settet med rader markøren innehar er referert til som aktiv sett
.
Du kan navngi en markør slik at det kunne bli referert til i et program for å hente og behandle radene som returneres av SQL-setningen, ett om gangen. Det finnes to typer av pekere:
Implisitt pekere
Explicit pekere
Implisitt Pekere
< p> Implisitt pekere blir automatisk opprettet av Oracle når en SQL-setning er utført, når det ikke er eksplisitt markør for uttalelsen. Programmerere kan ikke kontrollere den implisitte pekere og informasjonen i den.
Når en DML utsagn (INSERT, UPDATE og DELETE) er utstedt, en implisitt markøren er assosiert med denne uttalelsen. For INSERT operasjoner, holder markøren dataene som må settes inn. For UPDATE og DELETE operasjoner, identifiserer markøren radene som ville bli berørt.
I PL /SQL, kan du referere til den nyeste implisitte markøren som SQL markøren
, som alltid har attributtene som% FUNNET,% ISOPEN,% NOTFOUND, og% ROWCOUNT. En eksplisitt markøren skal defineres i erklæringen delen av PL /SQL Block. Den er laget på en SELECT Statement som returnerer mer enn én rad.
Syntaksen for å skape en eksplisitt markøren er:
CURSOR cursor_name ER select_statement;
Arbeide med en eksplisitt markøren innebærer fire trinn:
Erklærte markøren for initialisering i minnet
Åpne markøren for tildeling av minne
Henter markøren for å hente data
Lukke markøren for å frigjøre allokert minne
forkynner Markør
Erklærte markøren definerer markøren med et navn og tilhørende SELECT-setningen. For eksempel:
MARKØR- c_customers ER SELECT id, navn, adresse fra kunder;
Åpne Markør
Åpne markøren tildeler minne for markøren og gjør den klar for henting radene som returneres av SQL uttalelse i den. For eksempel vil vi åpne ovenfor definerte markøren som følger:
ÅPNE c_customers;
Henter Markør
Henter markøren innebærer tilgang til én rad om gangen. For eksempel vil vi hente rader fra oven åpnet markøren som følger:
HENT c_customers INTO c_id, c_name, c_addr;
Lukke Markør
Lukke markøren betyr frigjøre allokert minne. For eksempel vil vi stenge oven åpnet markøren som følger:
Lukk c_customers;
Eksempel:
Etter er en komplett eksempel for å illustrere begrepene eksplisitte pekere:
ERKLÆRER c_id kunder. id% type; c_name customers.name% type; c_addr customers.address% type; MARKØR- c_customers er SELECT id, navn, adresse fra kunder; BEGIN ÅPNE c_customers; LOOP HENT c_customers inn c_id, c_name, c_addr; dbms_output.put_line (c_id || '' || c_name || '' || c_addr); EXIT NÅR c_customers% notfound; END LOOP; c_name customers.name% type; Triggere er faktisk skrevet for å bli henrettet som svar på noen av følgende hendelser:.
En database manipulasjon (DML) uttalelse (DELETE, INSERT eller UPDATE)
En database definisjon (DDL) uttalelse (CREATE, ALTER eller DROP).
En database drift (SERVERERROR, pålogging, avlogging, oppstart eller nedleggelse).
Triggers kunne defineres på bordet, utsikt, skjema eller databasen som arrangementet er tilknyttet. ETTER | STEDET FOR} {SETT [OR] | UPDATE [OR] |
{FØR | ETTER | Den STEDET FOR klausulen brukes til å opprette trigger på en visning
{SETT [OR]. | UPDATE [OR] | DELETE}: Dette angir DML drift
[AV col_name]:.. Dette spesifiserer kolonnenavnet som ville bli oppdatert
[ON table_name]: Dette angir navnet på bordet i forbindelse med avtrekkeren
[referering OLD AS o NEW AS n]:. Dette gjør at du kan se nye og gamle verdier for ulike DML utsagn , som INSERT, UPDATE og DELETE.
[for hver rad]: Dette angir rad nivå utløser, dvs. ville utløse bli henrettet for hver rad blir berørt. Ellers avtrekkeren vil kjøre bare én gang når SQL-setningen utføres, som kalles et bord nivå trigger.
NÅR (tilstand): Dette gir en betingelse for rader som trigger ville brann. Denne klausulen er bare gyldig for rad nivå triggere. ID | NAME | AGE | ADRESSE | LØNN | + ---- + ---------- + ----- + ----------- + ---------- + | 1 | Ramesh | 32 | Ahmedabad | 2000.00 || 2 | Khilan | 25 | Delhi | 1500.00 || 3 | Kaushik | 23 | Kota | 2000.00 || 4 | Chaitali | 25 | Mumbai | 6500.00 || 5 | Hardik | 27 | Bhopal | 8500.00 || 6 | Komal | 22 | MP | 4500.00 | + ---- + ---------- + ----- + ----------- + ---------- +
Følgende program skaper en radnivå
trigger for kunder tabell som ville fyre for INSERT eller UPDATE eller DELETE operasjoner utføres på KUNDER bordet. Dette trigger vil vise lønn forskjellen mellom de gamle verdier og nye verdier:
CREATE OR REPLACE TRIGGER display_salary_changesBEFORE slette eller sette inn eller oppdatere PÅ customersFOR HVER ROWWHEN (NEW.ID > 0) ERKLÆRER sal_diff nummer, BEGIN sal_diff: =: NEW .salary -: OLD.salary; dbms_output.put_line ('Old lønn:' ||: OLD.salary); dbms_output.put_line ('Ny lønn:' ||: NEW.salary); markerer karakterer; merker: = karakterer (98, 97, 78, 87, 92); Totalt: = names.count; dbms_output.put_line ('Total' || total || 'Students'); 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); Å implementere arv, bør base objektene bli erklært som ikke endelig. Standard er FINAL.
Følgende programmer illustrere arv i PL /SQL-objekter. 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 Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat: 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:
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; /
Lengde: 20Width: 10Material: WoodLength: 50Width: 30Material: SteelPL /SQL-prosedyren ble fullført
Type opprettet.