PL / SQL-handledning: Allt du behöver veta om PL / SQL



PL / SQL-handledning täcker all detaljerad förklaring av alla nödvändiga begrepp som krävs för att behärska PL / SQL-programmeringen med olika exempel

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?

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 .





logo-pl / sql tutorial - edureka

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-operationerPL / 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örasPL / SQL definierar hur saker måste göras
Det utför ett enda uttalandeDet utför ett block av uttalanden på en gång.
SQL används främst för att manipulera dataPL / SQL, å andra sidan, används för att skapa applikationer
Den kan inte innehålla PL / SQL-kodEftersom 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.