PL / SQL-vejledning: Alt hvad du behøver at vide om PL / SQL

PL / SQL vejledning dækker al den detaljerede forklaring af alle de nødvendige begreber, der kræves for at mestre PL / SQL programmering med forskellige eksempler

PL / SQL er et proceduremæssigt sprog, der overvinder de mangler, som står over for Struktureret forespørgselssprog . Det er en udvidelse af SQL, og vi kan endda bruge SQL-forespørgsler uden besvær i noget PL / SQL-program eller program. I denne PL / SQL-tutorial gennemgår vi de grundlæggende begreber PL / SQL i detaljer. Følgende emner er dækket af denne artikel.



Hvad er PL / SQL?

Det står for proceduremæssig sprogudvidelse til Struktureret forespørgselssprog . Oracle oprettede PL / SQL, der udvider nogle begrænsninger af SQL for at give en mere omfattende løsning til opbygning af missionskritiske applikationer, der kører på oraklet .



logo-pl / sql tutorial - edureka

Funktioner

  • PL / SQL giver funktionaliteten af ​​et proceduremæssigt sprog såsom beslutningstagning, iteration osv.

  • Ved hjælp af en enkelt kommando kan PL / SQL udføre et antal forespørgsler.



  • Vi kan også genbruge PL / SQL-enheder såsom funktioner, udløsere, procedurer osv., Der er gemt i databasen efter oprettelsen.

  • PL / SQL har også en undtagelseshåndteringsblok, der håndterer undtagelserne i PL / SQL.

  • Omfattende fejlkontrol er også mulig ved hjælp af PL / SQL



  • Applikationerne skrevet i PL / SQL er bærbare til anden hardware og operativsystemer, forudsat at oracle skal være operationelt.

    hvordan man vender strengene i python

PL / SQL vs SQL

SQL PL / SQL
SQL er en enkelt forespørgsel, der bruges til at udføre DDL- og DML-operationerPL / SQL er en blok af koder, der bruges til at definere et helt program eller procedure / funktion osv
Det definerer ikke rigtig, hvordan ting skal gøres, men definerer snarere, hvad der skal gøresPL / SQL definerer, hvordan ting skal gøres
Den udfører en enkelt erklæringDen udfører en blok af udsagn på én gang.
SQL bruges hovedsageligt til at manipulere dataenePL / SQL bruges derimod til at oprette applikationer
Den kan ikke indeholde PL / SQL-kodeDa det er en SQL-udvidelse, kan den indeholde SQL-kode i den

Blokstrukturer i PL / SQL

PL / SQL organiserer typisk koden i blokke. Kodeblokken uden navn er kendt som en anonym blok. Det er kendt som den anonyme blok, fordi den ikke er gemt i oracle-databasen. Lad os se på en anonym blokering i PL / SQL.

[DECLARE] erklæringserklæringer [BEGIN] eksekveringserklæringer [EXCEPTION] undtagelseserklæringer END /

Når man ser på diagrammet vist ovenfor, kan vi se, at blokstrukturen er opdelt i fire dele, dvs. erklæring, begyndelse, undtagelse og slutning. Lad os prøve at forstå, hvordan blokstrukturen fungerer i PL / SQL. Ud af alle disse sektioner er eksekveringsafsnittet obligatorisk, og resten er alle valgfri.

  • ERKLÆRE nøgleord bruges til til erklæring sektion bruges til at erklære datatyper og strukturer såsom variabler, funktioner osv.

  • BEGYNDE nøgleord bruges til udførelsesafsnittet. Det er obligatorisk og indeholder alle de udsagn, der skal udføres. Denne blok er, hvor forretningslogikken er defineret, vi kan bruge både proceduremæssige eller SQL-sætninger i denne blok.

  • Det UNDTAGELSE nøgleord bruges til undtagelsessektionen. Den indeholder alle undtagelseserklæringer.

  • ENDE nøgleord markerer slutningen af ​​blokken, og skråstreg '/' fortæller det værktøj, du bruger (Oracle Database Tool) til at udføre PL / SQL-blokken.

Her er et simpelt eksempel for at vise, hvordan vi kan bruge PL / SQL-koden.

BEGIN NULL END /

Nu hvor vi ved, hvordan blokstrukturen fungerer i PL / SQL, lad os forstå de forskellige aspekter af PL / SQL som at erklære, navngive og tildele værdier til variablerne.

PL / SQL-variabler

Variablen i PL / SQL er grundlæggende et navn, der varierer eller midlertidig lagerplacering, der understøtter en bestemt datatype. Lad os se på, hvordan vi kan bruge variablerne i et PL / SQL-program.

Variable navngivningsregler

PL / SQL følger følgende regler for navngivning af variabler.

  • Variablen må ikke være mere end 31 tegn

  • Navnet på variablen skal starte med et ASCII-tegn. Da PL / SQL er forskel på store og små bogstaver, vil store og små bogstaver være forskellige variabler.

  • Efter det første tegn skal der være et specialtegn ($, _) eller et hvilket som helst tal.

Navngivningskonventioner

Brug følgende navngivningskonventioner, der er anført nedenfor, for at bruge variablerne.

Præfiks Datatype
v_VARCHAR2
n_NUMMER
t_BORD
r_RÆKKE
d_DATO
b_BOOLEAN

Erklæring

Lad os prøve at forstå, hvordan variabel erklæring udføres i PL / SQL

Erklæringen inkluderer variabelnavnet efterfulgt af datatypen og adskilt af et semikolon. Følgende er et eksempel for at vise, hvordan du kan erklære en variabel i PL / SQL.

ERKLÆR v_navn VARCHAR (25) n_alder NUMMER (3) BEGIN NULL END

Du kan også tilføje datatypens længde, som vi har gjort i eksemplet ovenfor.

Ankre

Ankeret refererer grundlæggende til brugen af% TYPE-nøgleordet, der til at erklære en variabel med datatypen tilknyttet en søjles datatype for en bestemt søjle i en tabel.

Se på et eksempel for at forstå dette. Antag, at vi har en tabel MEDARBEJDERE, vi kan bruge ankerne på følgende måde.

ERKLÆR v_navn EMPLOYEE.NAME% TYPE n_age EMPLOYEE.AGE% TYPE BEGIN NULL END /

Opgave

Variabel tildeling er ret let, vi kan bruge tildelingsoperatøren til at tildele værdier til en variabel. Følgende eksempel viser, hvordan vi kan tildele værdier til en variabel.

ERKLÆR v_name VARCHAR (20) n_course VARCHAR (10) BEGIN v_name = 'edureka' v_course = 'sql' END /

Initialisering

Vi kan også initialisere en værdi for variablen i erklæringsafsnittet. Følgende eksempel viser, hvordan vi kan initialisere værdier til en variabel.

ERKLÆR v_name VARCHAR (20) = 'edureka' n_course VARCHAR (10) = 'sql' BEGIN NULL END /

Nu hvor vi ved, hvordan vi kan arbejde med variablerne, lad os prøve at forstå, hvordan vi vil bruge funktioner i PL / SQL.

Funktion i PL / SQL

En funktion i PL / SQL er grundlæggende en navngivet blok, der returnerer en værdi. Det er også kendt som en underrutine eller et underprogram, den følgende syntaks viser, hvordan vi kan bruge funktioner i PL / SQL.

OPRET [ELLER ERSTAT] FUNKTION funktionsnavn [(parameter_1 [IN] [OUT] data_type, parameter_2 [IN] [OUT] data_type, parameter_N [IN] [OUT] data_type] RETURN return_data_type IS BEGIN statements return return_data_type EXCEPTION END /

Først og fremmest skal du angive et funktionsnavn efter nøgleordet. Funktionsnavnet skal starte med et verbum. En funktion kan have ingen, en eller flere parametre, som vi angiver i parametre. Vi er nødt til at specificere datatypen for hver parameter eksplicit, og derefter kommer den tilstand, som kan en af ​​følgende.

  • IN - IN-parameteren er en skrivebeskyttet parameter.

  • UD - Det er en skriveparameter

  • IND UD - IN OUT-parameteren er begge read-skriv-parameter.

Her er et simpelt eksempel for at vise, hvordan vi bruger funktioner i PL / SQL.

OPRET ELLER ERSTAT FUNKTION try_parse (iv_nummer I VARCHAR2) RETURNUMMER ER BEGIN RETURN til_nummer (iv_nummer) UNDTAGELSE NÅR andre DAN RETURER NULL SLUT

Opkald til en funktion

Lad os prøve at kalde den funktion, vi har lavet, i en anonym blokering i det følgende eksempel.

INDSTIL SERVEROUTPUT PÅ STØRRELSE 1000000 ERKLÆRING n_x nummer n_y nummer n_z nummer BEGIN n_x: = try_parse ('256') n_y: = try_parse ('29 .72 ') n_z: = try_parse (' pqrs ') DBMS_OUTPUT.PUT_LINE (n_xUT) DBMS_UT n_y) DBMS_OUTPUT.PUT_LINE (n_z) END /

Vi kan også kalde funktionen i en SELECT-sætning. Nu hvor vi ved, hvordan vi kan bruge funktioner i PL / SQL, lad os prøve at forstå, hvordan vi arbejder med procedurer i PL / SQL.

PL / SQL-procedure

En procedure er dybest set en blok, der udfører en bestemt opgave. Ved hjælp af en procedure kan vi indpakke eller indkapsle kompleks forretningslogik og genbruge dem i både applikations- og databaselag.

Lad os se på et simpelt eksempel for at forstå, hvordan proceduren fungerer i PL / SQL

OPRET ELLER UDSKIFT PROCEDURE justeringsløn (in_ arbejdstager_id I MEDARBEJDERE.EMPLOYEE_ID% TYPE, in_procent I NUMMER) ER BEGIN - opdater medarbejderløn OPDATER medarbejdere SÆT løn = løn + løn * in_procent / 100 HVOR medarbejder_id = indarbejder_ID SLUT

I ovenstående eksempel har vi to parametre, proceduren justerer lønnen med en given procentdel, og UPDATE-nøgleordet opdaterer værdien i lønoplysningerne.

Procedurehoved

Sektionen før nøgleordet IS kaldes procedurehovedet. Følgende er nogle få punkter, man skal være fortrolig med, mens man arbejder med procedurer.

  • skema - Det er det valgfri navn på skemaet, som proceduren tilhører.

  • navn - Navnet på proceduren, der skal starte med et verbum.

  • parametre - Det er den valgfri liste over parametre.

  • GODKENDT - Det bestemmer, om proceduren skal udføres med den aktuelle brugers privilegium eller den oprindelige ejer af proceduren.

Procedure organ

Alt der kommer efter IS-nøgleordet kaldes procedureorganet. Vi har erklæringen, undtagelsen og eksekveringserklæringerne i procedureorganet. I modsætning til funktionen bruges RETURN-nøgleordet i en procedure til at standse udførelsen og returnere kontrollen til den, der ringer op.

Opkald til en procedure

Lad os se, hvordan vi kan kalde en procedure i PL / SQL.

EXEC procedure_navn (param1, param2 & hellipparamN)

Vi kan kalde procedurerne uden parametre ved blot at bruge EXEC-nøgleordet og procedurenavnet. Nu hvor vi ved, hvordan vi kan arbejde med procedurer, lad os prøve at forstå, hvordan indlejrede blokke bruges i PL / SQL.

Indlejret blok

En indlejret blok er intet andet end en kombination af en eller flere PL / SQL-blokke for at få bedre kontrol over udførelsen og ekstraordinær håndtering af programmet.

Her er et simpelt eksempel på en indlejret blok.

INDSTIL SERVEROUTPUT PÅ STØRRELSE 1000000 DEKLARERING n_emp_id MEDARBEJDERE.EMPLOYEE_ID% TYPE: = & emp_id1 BEGYN DEKLARER n_emp_id medarbejdere. Medarbejder_id% TYPE: = & emp_id2 v_navn medarbejdere. Første navn% TYPE BEGIN SELECT_name for medarbejder '|| n_emp_id ||' er '|| v_name) UNDTAGELSE NÅR ingen_data_fund DAN DBMS_OUTPUT.PUT_LINE (' Medarbejder '|| n_emp_id ||' ikke fundet ') END END /

Den ydre PL / SQL-blok i ovenstående eksempel er kendt som overordnet blok eller omslutningsblok, den indre blok er på den anden side kendt som underordnet blok eller den vedlagte blok.

Det er ikke en god ide at bruge variablerne med de samme navne i begge blokke, fordi underblokvariablen under udførelsen tilsidesætter den overordnede blokvariabel. Det sker, fordi PL / SQL prioriterer variablen i sin egen blok først.

Bloker etiket

Vi kan løse dette problem med bloketiketten, der hjælper os med at henvise til variabler inde i blokke ved hjælp af en etiket.

Her er et simpelt eksempel for at vise, hvordan vi kan bruge en bloketiket.

 <>ERKLÆR ... BEGIN ... AFSLUT

Brug af en bloketiket hjælper med at forbedre læsbarheden af ​​koden, få bedre kontrol og henvise til blokkene. Nu hvor vi ved, hvordan vi kan arbejde med indlejrede blokke, lad os prøve at forstå, hvordan IF-erklæringen fungerer i PL / SQL.

IF-erklæring

PL / SQL har tre IF-UDTALELSER

  • HVIS SÅ - Det er den enkleste HVIS ERKLÆRING, hvis betingelsen er sand, vil udsagnene udføres, hvis betingelsen er falsk, gør den intet.

  • IF-THEN-ELSE - I dette tilføjes ELSE-klausulen for en alternativ rækkefølge af udsagn.

  • IF-THEN-ELSEIF - Det giver os mulighed for at udføre flere testbetingelser i en sekvens.

IF-THEN Syntaks

HVIS-tilstand DEN sekvens_af_opgørelser AFSLUT HVIS

IF-THEN-ELSE syntaks

HVIS-tilstand DEN sekvens_af_hvis_statementer ELSE-sekvens_ af_else_erklæringer END IF

IF-THEN-ELSEIF syntaks

HVIS-betingelse1 DAN sekvens_af_opgørelser1 ELSIF-betingelse2 DAN-sekvens_af_opgaveløsninger2 ELSE-sekvens_af_opgørelser3 END HVIS

Nu hvor vi er færdige med IF-UDTALELSEN, lad os se på CASE-sætningen i PL / SQL.

CASE-erklæring

CASE-sætningen hjælper dybest set med at udføre en række udsagn baseret på en vælger. En vælger kan i dette tilfælde være hvad som helst, det kan være en variabel, funktion eller et simpelt udtryk. Her er et simpelt eksempel for at vise syntaksen for CASE-sætningen i PL / SQL.

[<>] SAG [SAND | vælger] NÅR udtryk1 DAN sekvens_af_udtalelser1 NÅR udtryk2 DAN sekvens_af_udtalelser2 ... NÅR udtrykN DAN sekvens_af_udtalelserN [ELSE rækkefølge_af_udtalelserN + 1] AFSLUTT CASE [etiketnavn]

I ovenstående syntaks kommer vælgeren efter CASE-nøgleordet. PL / SQL evaluerer vælgeren kun én gang for at bestemme, hvilken sætning der skal udføres.

Efterfulgt af vælgeren er WHEN-nøgleordet. Hvis udtrykket tilfredsstiller vælgeren, bliver den tilsvarende sætning efter DEN nøgleord udført.

Nu hvor vi ved, hvordan vi kan bruge en CASE-sætning, lad os prøve at forstå, hvordan vi vil bruge loop-sætningerne i PL / SQL.

Loop Erklæring

En loop-sætning i PL / SQL er en iterativ sætning, der giver dig mulighed for at udføre en række udsagn flere gange. Her er et simpelt eksempel for at vise syntaksen for en loop-sætning i PL / SQL.

LOOP sekvens_af_opgørelser END LOOP

Der skal være mindst en eksekverbar sætning mellem nøgleordet LOOP og END LOOP.

Loop med EXIT-erklæring

EXIT og EXIT når udsagn giver dig mulighed for at forlade loop. EXIT WHEN-sætning afslutter sløjfen betinget, mens EXIT afslutter udførelsen ubetinget.

LOOP ... AFSLUT NÅR tilstand END LOOP

Loop-etiket

En loop-label bruges til at kvalificere navnet på loop-counter-variablen, når den bruges i en nestet loop. Følgende er syntaksen for en loop-label.

 <>LOOP-rækkefølge_af_udtalelser END LOOP-etiket

Nu hvor vi ved, hvordan vi kan bruge loop-sætningerne, lad os se på mens loop-sætninger for bedre forståelse.

Mens løkkeerklæring

Vi kan bruge WHILE-løkkeerklæringen, når antallet af henrettelser ikke er defineret, før udførelsen starter. Følgende syntaks bruges til en WHILE-loop-sætning i PL / SQL.

HVILKEN betingelse LOOP sekvens_af_opgavene END LOOP

Betingelsen i syntaksen er en boolsk værdi eller et udtryk, der vurderes at være enten SAND, FALSK eller NULL. Hvis betingelsen er SAND, udføres udsagnene, hvis den er FALSK, stopper udførelsen, og kontrollen går til den næste eksekverbare sætning.

Nu hvor vi ved, hvordan vi kan bruge en WHILE loop-sætning, lad os tage et kig på FOR-loop-sætningen.

Til løkkeerklæring

En FOR-loop-sætning i PL / SQL giver os mulighed for at udføre en række udsagn et bestemt antal gange. Følgende er syntaksen for at bruge FOR-loop-sætning i PL / SQL

FOR loop_counter IN [REVERSE] lower_bound .. higher_bound LOOP sequence_of_statements END LOOP

PL / SQL opretter automatisk en lokal variabel loop_counter med en INTEGER-datatype til loop, så du ikke behøver at erklære det eksplicit. Det lavere..højere er det område, hvor sløjfen itererer. Du skal også have mindst en eksekverbar erklæring mellem LOOP og END LOOP nøgleord.

Nu hvor vi ved, hvordan vi kan bruge loop-sætningerne i PL / SQL, lad os se på enestående håndtering i PL / SQL.

Ekstraordinær håndtering

I PL / SQL behandles enhver form for fejl som en undtagelse. En undtagelse kan behandles som en særlig tilstand, der kan ændre eller ændre udførelsesstrømmen. I PL / SQL er der to typer undtagelser.

  • Systemundtagelse - Det hæves af PL / SQL-kørselstid, når det registrerer en fejl.

  • Programmeringsdefineret undtagelse - Disse undtagelser er defineret af programmøren i en bestemt applikation.

Definition af en undtagelse

En undtagelse i PL / SQL skal erklæres, før den kan hæves. Vi kan definere undtagelsen ved hjælp af EXCEPTION-nøgleordet, som vi har gjort i eksemplet nedenfor.

EXCEPTION_NAME EXCEPTION

For at gøre en undtagelse bruger vi RAISE-nøgleordet.

HÆV EXCEPTION_NAME

Så det handlede kun om PL / SQL, jeg håber, at denne artikel har hjulpet dig med at tilføje værdi til din viden. For mere information om SQL eller databaser kan du henvise til vores omfattende læseliste her: .

Hvis du ønsker at få en struktureret træning på MySQL, så tjek vores som kommer med instruktørstyret live træning og projektoplevelse i det virkelige liv. Denne træning hjælper dig med at forstå MySQL i dybden og hjælpe dig med at opnå mestring over emnet.

hvad er ramme i java

Har du et spørgsmål til os? Nævn det i kommentarfeltet i ” PL / SQL vejledning ”Og jeg vender tilbage til dig.