PL / SQL är ett processpråk som övervinner bristerna Structured Query Language . Det är en förlängning av SQL och vi kan till och med använda SQL-frågor utan krångel i något PL / SQL-program eller program. I denna PL / SQL-handledning kommer vi att gå igenom de grundläggande begreppen PL / SQL i detalj. Följande ämnen behandlas i den här artikeln.
- Vad är PL / SQL?
- Blockstrukturer i PL / SQL
- PL / SQL-variabler
- Funktion i PL / SQL
- PL / SQL-procedur
- Nestat block
- IF-uttalande
- CASE-uttalande
- Loop Statement
- Exceptionell hantering
Vad är PL / SQL?
Det står för procedurellt språkförlängning till Structured Query Language . Oracle skapade PL / SQL som utvidgar vissa begränsningar av SQL för att ge en mer omfattande lösning för att bygga uppdragskritiska applikationer som körs på oraklet .
Funktioner
PL / SQL tillhandahåller funktionaliteten i ett processprog som beslutsfattande, iteration, etc.
Med ett enda kommando kan PL / SQL utföra ett antal frågor.
Vi kan också återanvända PL / SQL-enheter som funktioner, utlösare, procedurer etc som lagras i databasen efter skapandet.
PL / SQL har också ett undantagshanteringsblock som hanterar undantagen i PL / SQL.
Omfattande felkontroll är också möjligt med PL / SQL
Applikationerna skrivna i PL / SQL är bärbara till annan hårdvara och operativsystem förutsatt att oracle måste vara operativt.
PL / SQL vs SQL
SQL | PL / SQL |
SQL är en enda fråga som används för att utföra DDL- och DML-operationer | PL / SQL är ett kodkod som används för att definiera ett helt program eller procedur / funktion, etc. |
Den definierar inte riktigt hur saker måste göras, utan definierar snarare vad som behöver göras | PL / SQL definierar hur saker måste göras |
Det utför ett enda uttalande | Det utför ett block av uttalanden på en gång. |
SQL används främst för att manipulera data | PL / SQL, å andra sidan, används för att skapa applikationer |
Den kan inte innehålla PL / SQL-kod | Eftersom det är ett SQL-tillägg kan det innehålla SQL-kod i det |
Blockstrukturer i PL / SQL
PL / SQL organiserar vanligtvis koden i block. Kodblocket utan namn kallas ett anonymt block. Det kallas det anonyma blocket eftersom det inte sparas i Oracle-databasen. Låt oss ta en titt på ett anonymt block i PL / SQL.
hur man hanterar popup-fönster i selen webdriver
[DEKLARER] uttalanden uttalanden [BEGIN] utförande uttalanden [EXCEPTION] undantags uttalanden SLUT /
Om vi tittar på diagrammet som visas ovan kan vi se att blockstrukturen är uppdelad i fyra delar, dvs. deklaration, början, undantag och slut. Låt oss försöka förstå hur blockstrukturen fungerar i PL / SQL. Av alla dessa avsnitt är exekveringsavsnittet obligatoriskt och resten är alla valfria.
DEKLARERA nyckelord används för att förklara avsnittet används för att deklarera datatyper och strukturer såsom variabler, funktioner, etc.
BÖRJA nyckelord används för exekveringsavsnittet. Det är obligatoriskt och innehåller alla uttalanden som behöver utföras. Detta block är där affärslogiken definieras, vi kan använda både procedur- eller SQL-uttalanden i detta block.
De UNDANTAG nyckelord används för undantagsavsnittet. Den innehåller alla undantagsförklaringar.
SLUTET nyckelord markerar slutet på blocket och det bakåtgående snedstrecket '/' säger till verktyget som du använder (Oracle Database Tool) för att utföra PL / SQL-blocket.
Här är ett enkelt exempel för att visa hur vi kan använda PL / SQL-koden.
Börja NULL SLUT /
Nu när vi vet hur blockstrukturen fungerar i PL / SQL, låt oss förstå de olika aspekterna av PL / SQL som att deklarera, namnge och tilldela värden till variablerna.
PL / SQL-variabler
Variabeln i PL / SQL är i grunden ett namn som varierar eller tillfällig lagringsplats som stöder en viss datatyp. Låt oss ta en titt på hur vi kan använda variablerna i ett PL / SQL-program.
Variabla namngivningsregler
PL / SQL följer följande regler för namngivning av variabler.
Variabeln får inte bestå av mer än 31 tecken
Variabelns namn bör börja med ett ASCII-tecken. Eftersom PL / SQL är skiftlägeskänslig kommer en stor bokstav och en liten bokstav att vara olika variabler.
Efter det första tecknet måste det finnas ett specialtecken ($, _) eller vilket nummer som helst.
Namnkonventioner
Använd följande namngivningskonventioner listade nedan för att använda variablerna.
Prefix | Data typ |
v_ | VARCHAR2 |
n_ | SIFFRA |
t_ | TABELL |
r_ | RAD |
d_ | DATUM |
b_ | BOOLEAN |
Deklaration
Låt oss försöka förstå hur variabeldeklaration görs i PL / SQL
Deklarationen innehåller variabelnamnet följt av datatypen och åtskild av ett semikolon. Följande är ett exempel för att visa hur du kan deklarera en variabel i PL / SQL.
DEKLARERA v_name VARCHAR (25) n_age NUMMER (3) BÖRJA NULL SLUT
Du kan också lägga till längden på datatypen som vi har gjort i exemplet ovan.
Ankare
Ankaret hänvisar i grunden till användningen av nyckelordet% TYPE som för att deklarera en variabel med datatypen associerad med en kolumn datatyp för en viss kolumn i en tabell.
Ta en titt på ett exempel för att förstå detta. Antag att vi har en tabell MEDARBETARE, vi kan använda ankarna på följande sätt.
DEKLARERA v_name EMPLOYEE.NAME% TYPE n_age EMPLOYEE.AGE% TYPE BEGIN NULL END /
Uppdrag
Variabel tilldelning är ganska lätt, vi kan använda uppdragsoperatören för att tilldela värden till en variabel. Följande exempel visar hur vi kan tilldela värden till en variabel.
DEKLARERA v_name VARCHAR (20) n_course VARCHAR (10) BEGIN v_name = 'edureka' v_course = 'sql' END /
Initiering
Vi kan initialisera ett värde för variabeln i deklarationssektionen. Följande exempel visar hur vi kan initiera värden till en variabel.
DEKLARERA v_name VARCHAR (20) = 'edureka' n_course VARCHAR (10) = 'sql' Börja NULL SLUT /
Nu när vi vet hur vi kan arbeta med variablerna, låt oss försöka förstå hur vi kommer att använda funktioner i PL / SQL.
Funktion i PL / SQL
En funktion i PL / SQL är i grunden ett namngivet block som returnerar ett värde. Det är också känt som en subrutin eller ett underprogram, följande syntax visar hur vi kan använda funktioner i PL / SQL.
SKAPA [ELLER Byt ut] FUNKTION funktionsnamn [(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 och främst måste du ange ett funktionsnamn efter nyckelordet. Funktionsnamnet måste börja med ett verb. En funktion kan ha inga, en eller flera parametrar som vi anger i parametrar. Vi måste specificera datatypen för varje parameter uttryckligen och sedan kommer läget som kan något av följande.
I - IN-parametern är en skrivskyddad parameter.
UT - Det är en skrivbar parameter
IN UT - Parametern IN OUT är både läs- och skrivparameter.
Här är ett enkelt exempel för att visa hur vi använder funktioner i PL / SQL.
SKAPA ELLER Byt ut FUNKTION try_parse (iv_number IN VARCHAR2) RETURNUMMER ÄR BÖRJA RETURN to_number (iv_number) UNDANTAG NÄR andra DÄR RETURER NULL SLUT
Ringa till en funktion
Låt oss försöka anropa den funktion vi har gjort i ett anonymt block i följande exempel.
STÄLL SERVERUTGÅNG PÅ STORLEK 1000000 FÖRKLARA 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 också ringa funktionen i ett SELECT-uttalande. Nu när vi vet hur vi kan använda funktioner i PL / SQL, låt oss försöka förstå hur vi arbetar med procedurer i PL / SQL.
PL / SQL-procedur
Ett förfarande är i grunden ett block som utför en specifik uppgift. Med hjälp av en procedur kan vi lägga in eller inkapsla komplex affärslogik och återanvända dem i både applikations- och databaslager.
Låt oss titta på ett enkelt exempel för att förstå hur proceduren fungerar i PL / SQL
SKAPA ELLER BYT FÖRFARANDE justeringslön (in_arbetare_id I MEDARBETARE.EMPLOYEE_ID% TYP, i_procent I NUMMER) ÄR BÖRJA - uppdatera anställdas lön UPPDATERA anställda SÄTT lön = lön + lön * i procent / 100 VAR anställd_id = in_arbetare_id SLUT
I exemplet ovan har vi två parametrar, proceduren justerar lönen med en viss procentsats och UPDATE-nyckelordet uppdaterar värdet i löneinformationen.
Procedurhuvud
Avsnittet före nyckelordet IS kallas procedurhuvudet. Följande är några tips som man måste känna till när man arbetar med procedurer.
schema - Det är det valfria namnet på det schema som proceduren tillhör.
namn - Namnet på proceduren som bör börja med ett verb.
parametrar - Det är den valfria listan över parametrar.
Auktoriserad - Det avgör om proceduren ska köras med befogenhet för den nuvarande användaren eller den ursprungliga ägaren av proceduren.
Procedur organ
Allt som kommer efter IS-nyckelordet kallas procedurorganet. Vi har deklarations-, undantags- och verkställande uttalanden i procedurorganet. Till skillnad från funktionen används RETURN-nyckelordet i en procedur för att stoppa körningen och återföra kontrollen till den som ringer.
Anropa ett förfarande
Låt oss se hur vi kan kalla ett förfarande i PL / SQL.
EXEC procedurnamn (param1, param2 & hellipparamN)
Vi kan ringa procedurerna utan parametrar genom att bara använda EXEC-nyckelordet och procedurnamnet. Nu när vi vet hur vi kan arbeta med procedurer, låt oss försöka förstå hur kapslade block används i PL / SQL.
Nestat block
Ett kapslat block är inget annat än en kombination av ett eller flera PL / SQL-block för att få bättre kontroll över körningen och exceptionell hantering av programmet.
Här är ett enkelt exempel på ett kapslat block.
STÄLL SERVEROUTPUT PÅ STORLEK 1000000 DEKLARERA n_emp_id ANSTÄLLDA.EMPLOYEE_ID% TYPE: = & emp_id1 BÖRJA DEKLARERA n_emp_id anställda. Anställd_id% TYPE: = & emp_id2 v_namn anställda.först_namn% TYPE BEGIN SELECT_name för anställd '|| n_emp_id ||' är '|| v_name) UNDANTAG NÄR no_data_found THEN DBMS_OUTPUT.PUT_LINE (' Anställd '|| n_emp_id ||' hittades inte ') END END /
Det yttre PL / SQL-blocket i exemplet ovan är känt som överordnat block eller inneslutande block, det inre blocket å andra sidan är känt som underordnat block eller det inneslutna blocket.
Det är inte en bra idé att använda variablerna med samma namn i båda blocken, eftersom underblockvariabeln under körningen kommer att åsidosätta moderblockvariabeln. Det händer eftersom PL / SQL prioriterar variabeln först i sitt eget block.
Blockera etikett
Vi kan övervinna detta problem med blocketiketten som hjälper oss att göra referenser till variabler inuti block med hjälp av en etikett.
Här är ett enkelt exempel för att visa hur vi kan använda en blocketikett.
<>FÖRKLARA ... BÖRJA ... SLUT
Att använda en blocketikett hjälper till att förbättra kodens läsbarhet, få bättre kontroll och göra referenser till blocken. Nu när vi vet hur vi kan arbeta med kapslade block, låt oss försöka förstå hur IF STATEMENT fungerar i PL / SQL.
IF-uttalande
PL / SQL har tre IF-UTTALEN
OM DÅ - Det är det enklaste OM UTTALANDE om villkoret är sant kommer uttalandena att genomföras, om villkoret är falskt, gör det ingenting.
OM DÅ ANNARS - I detta läggs ELSE-klausulen till för en alternativ sekvens av uttalanden.
IF-THEN-ELSEIF - Det gör att vi kan utföra flera testvillkor i en sekvens.
IF-THEN Syntax
OM villkor DÅ sekvens_av_uttalanden AVSLUTA OM
IF-THEN-ELSE-syntax
OM villkor DÄR sekvens_av_if_stateringar ELSE sekvens_av_else_stateringar SLUT OM
IF-THEN-ELSEIF-syntax
OM villkor1 SÄND sekvens_status1 ELSIF-tillstånd2 SÄNT sekvens_status2 ELSE sekvens_status3 SLUT OM
Nu när vi är klara med IF STATEMENT, låt oss titta på CASE-uttalandet i PL / SQL.
CASE-uttalande
CASE-uttalandet hjälper i grunden till att utföra en sekvens av uttalanden baserat på en väljare. En väljare kan i det här fallet vara vad som helst, det kan vara en variabel, funktion eller ett enkelt uttryck. Här är ett enkelt exempel för att visa syntaxen för CASE-satsen i PL / SQL.
[<>] FALL [SANT | väljare] NÄR uttryck1 DAN sekvens_av_stateringar1 NÄR uttryck2 SÄND sekvens_av_uttalande2 ... NÄR uttryckN DÅ sekvens_av_stateringarN [ELSE-sekvens_av_statistikN + 1] SLUT FALL [etikettnamn]
I ovanstående syntax kommer väljaren efter CASE-nyckelordet. PL / SQL utvärderar väljaren bara en gång för att avgöra vilket uttalande som ska köras.
Följt av väljaren är WHEN-nyckelordet. Om uttrycket uppfyller väljaren, körs motsvarande uttalande efter THEN nyckelord.
Nu när vi vet hur vi kan använda ett CASE-uttalande, låt oss försöka förstå hur vi kommer att använda loop-uttalandena i PL / SQL.
Loop Statement
Ett loop-uttalande i PL / SQL är ett iterativt uttalande som låter dig köra en sekvens av uttalanden flera gånger. Här är ett enkelt exempel för att visa syntaxen för ett loop-uttalande i PL / SQL.
LOOP sekvens_av_uttal END LOOP
Det måste finnas minst ett körbart uttalande mellan nyckelordet LOOP och END LOOP.
Loop med EXIT-uttalande
EXIT och EXIT när uttalanden tillåter dig att lämna slingan. EXIT WHEN-satsen avslutar slingan villkorligt medan EXIT avslutar exekveringen villkorslöst.
LOPPA ... AVSLUTA NÅR tillstånd SLUTSLUTA
Loop-etikett
En loopetikett används för att kvalificera namnet på loop-räknervariabeln när den används i en kapslad loop. Följande är syntaxen för en loopetikett.
<>LOOP-sekvens_av_uttal END LOOP-etikett
Nu när vi vet hur vi kan använda loop-uttalanden, låt oss titta på medan loop-uttalanden för bättre förståelse.
While Loop Statement
Vi kan använda WHILE loop-uttalandet när antalet avrättningar inte definieras förrän körningen startar. Följande syntax används för ett WHILE loop-uttalande i PL / SQL.
VILKA villkor LOOP-sekvens_av_uttal END LOOP
Villkoret i syntaxen är ett booleskt värde eller uttryck som utvärderas antingen SANT, FALSK eller NULL. Om villkoret är SANT kommer uttalandena att köras, om det är FALSKT stoppas körningen och kontrollen går till nästa körbara uttalande.
Nu när vi vet hur vi kan använda ett WHILE loop-uttalande, låt oss titta på FOR-loop-uttalandet.
För Loop Statement
Ett FOR-loop-uttalande i PL / SQL tillåter oss att utföra en sekvens av uttalanden för ett bestämt antal gånger. Följande är syntaxen för att använda FOR loop-uttalande i PL / SQL
FOR loop_counter IN [REVERSE] lower_bound .. higher_bound LOOP sequence_of_statements END LOOP
PL / SQL skapar en lokal variabel loop_counter automatiskt med en INTEGER-datatyp för loop så att du inte behöver deklarera det uttryckligen. Den nedre gränsen..högre gränsen är det område över vilket slingan itererar. Du måste också ha minst ett körbart uttalande mellan nyckelord LOOP och END LOOP.
Nu när vi vet hur vi kan använda loop-uttalandena i PL / SQL, låt oss ta en titt på exceptionell hantering i PL / SQL.
Exceptionell hantering
I PL / SQL behandlas alla typer av fel som ett undantag. Ett undantag kan behandlas som ett speciellt villkor som kan ändra eller ändra körningsflödet. I PL / SQL finns det två typer av undantag.
Systemundantag - Det höjs av PL / SQL-körningstiden när det upptäcker ett fel.
Programmerar-definierat undantag - Dessa undantag definieras av programmeraren i en specifik applikation.
Definiera ett undantag
Ett undantag i PL / SQL måste deklareras innan det kan höjas. Vi kan definiera undantaget med hjälp av nyckelordet EXCEPTION som vi har gjort i exemplet nedan.
EXCEPTION_NAME EXCEPTION
För att göra ett undantag använder vi nyckelordet RAISE.
HÖJ EXCEPTION_NAME
Så det handlade bara om PL / SQL, jag hoppas att den här artikeln har hjälpt dig att tillföra värde till din kunskap. För mer information om SQL eller databaser, se vår omfattande läslista här: .
Om du vill få en strukturerad utbildning på MySQL, kolla in vår som kommer med instruktörsledad liveutbildning och verklig projektupplevelse. Denna utbildning hjälper dig att förstå MySQL på djupet och hjälper dig att behärska ämnet.
Har du en fråga till oss? Vänligen nämna det i kommentarfältet i ” PL / SQL-handledning ”Och jag kommer tillbaka till dig.