sql >> Database >  >> RDS >> Database

PL/SQL-zelfstudie:alles wat u moet weten over PL/SQL

PL/SQL is een proceduretaal die de tekortkomingen van Structured Query Language overwint. Het is een uitbreiding van SQL en we kunnen zelfs zonder problemen SQL-query's gebruiken in elke PL/SQL-toepassing of -programma. In deze PL/SQL-tutorial zullen we de basisconcepten van PL/SQL in detail doornemen. De volgende onderwerpen komen in dit artikel aan bod.

  • Wat is PL/SQL?
    • Functies
    • PL/SQL versus SQL
  • Blokkeerstructuren in PL/SQL
  • PL/SQL-variabelen
  • Functie in PL/SQL
  • PL/SQL-procedure
  • Genest blok
  • IF-verklaring
  • CASE-verklaring
  • Loop-instructie
    • While-verklaring
    • For Loop-instructie
  • Uitzonderlijke behandeling

Wat is PL/SQL?

Het staat voor procedurele taaluitbreiding naar de gestructureerde zoektaal. Oracle heeft PL/SQL gemaakt die een aantal beperkingen van SQL uitbreidt om een ​​uitgebreidere oplossing te bieden voor het bouwen van bedrijfskritieke applicaties die op de Oracle-database draaien.

Functies

  • PL/SQL biedt de functionaliteit van een proceduretaal, zoals besluitvorming, iteratie, enz.

  • Met een enkele opdracht kan PL/SQL een aantal query's uitvoeren.

  • We kunnen ook PL/SQL-eenheden hergebruiken, zoals functies, triggers, procedures, enz. die na het maken in de database zijn opgeslagen.

  • PL/SQL heeft ook een blok voor het afhandelen van uitzonderingen dat de uitzonderingen in PL/SQL afhandelt.

  • Uitgebreide foutcontrole is ook mogelijk met PL/SQL

  • De applicaties die zijn geschreven in PL/SQL zijn overdraagbaar naar andere hardware en besturingssystemen, op voorwaarde dat Oracle operationeel is.

PL/SQL versus SQL

SQL PL/SQL
SQL is een enkele query die wordt gebruikt om DDL- en DML-bewerkingen uit te voeren PL/SQL is een codeblok dat wordt gebruikt om een ​​volledig programma of procedure/functie, enz. te definiëren
Het definieert niet echt hoe dingen moeten worden gedaan, maar definieert eerder wat er gedaan moet worden PL/SQL definieert hoe dingen gedaan moeten worden
Het voert een enkele instructie uit Het voert een blok met instructies tegelijk uit.
SQL wordt voornamelijk gebruikt om de gegevens te manipuleren PL/SQL daarentegen wordt gebruikt om applicaties te maken
Het mag geen PL/SQL-code bevatten Omdat het een SQL-extensie is, kan het SQL-code bevatten

Blokkeer structuren in PL/SQL

PL/SQL organiseert de code doorgaans in blokken. Het codeblok zonder naam staat bekend als een anoniem blok. Het staat bekend als het anonieme blok omdat het niet wordt opgeslagen in de Oracle-database. Laten we eens kijken naar een anoniem blok in PL/SQL.

[DECLARE] declaratie-statements;[BEGIN] uitvoerings-statements; [UITZONDERING] uitzonderingsverklaringen;END;/

Als we naar het bovenstaande diagram kijken, kunnen we zien dat de blokstructuur in vier delen is verdeeld, namelijk declaratie, begin, uitzondering en einde. Laten we proberen te begrijpen hoe de blokstructuur werkt in PL/SQL. Van al deze secties is de uitvoeringssectie verplicht en de rest is allemaal optioneel.

  • VERKLAREN trefwoord wordt gebruikt om voor de declaratiesectie wordt gebruikt om gegevenstypen en structuren zoals variabelen, functies, enz. te declareren.

  • BEGIN sleutelwoord wordt gebruikt voor de uitvoeringssectie. Het is verplicht en bevat alle instructies die moeten worden uitgevoerd. Dit blok is waar de bedrijfslogica wordt gedefinieerd, we kunnen zowel procedurele als SQL-instructies in dit blok gebruiken.

  • De UITZONDERING trefwoord wordt gebruikt voor de uitzonderingssectie. Het bevat alle uitzonderingsverklaringen.

  • END trefwoord markeert het einde van het blok en de achterwaartse slash '/' vertelt de tool die u gebruikt (Oracle Database Tool) om het PL/SQL-blok uit te voeren.

Hier is een eenvoudig voorbeeld om te laten zien hoe we de PL/SQL-code kunnen gebruiken.

BEGIN NULL;END;/

Nu we weten hoe de blokstructuur werkt in PL/SQL, laten we de verschillende aspecten van PL/SQL begrijpen, zoals het declareren, benoemen en toewijzen van waarden aan de variabelen.

PL/SQL-variabelen

De variabele in PL/SQL is in feite een naam die varieert of een tijdelijke opslaglocatie die een bepaald gegevenstype ondersteunt. Laten we eens kijken hoe we de variabelen in een PL/SQL-programma kunnen gebruiken.

Variabele naamgevingsregels

PL/SQL volgt de volgende regels voor het benoemen van variabelen.

  • De variabele mag niet langer zijn dan 31 tekens

  • De naam van de variabele moet beginnen met een ASCII-teken. Aangezien PL/SQL hoofdlettergevoelig is, zijn een hoofdletter en een kleine letter verschillende variabelen.

  • Na het eerste teken moet er een speciaal teken($,_ ) of een willekeurig getal staan.

Naamconventies

Gebruik de onderstaande naamconventies om de variabelen te gebruiken.

Voorvoegsel Gegevenstype
v_ VARCHAR2
n_ AANTAL
t_ TABEL
r_ RIJ
d_ DATUM
b_ BOOLEAN

Verklaring

Laten we proberen te begrijpen hoe variabele declaratie wordt gedaan in PL/SQL

De declaratie bevat de variabelenaam gevolgd door het gegevenstype en gescheiden door een puntkomma. Hieronder volgt een voorbeeld om te laten zien hoe u een variabele in PL/SQL kunt declareren.

DECLARE v_name VARCHAR(25); n_leeftijd NUMBER(3);BEGIN NULL;END;

U kunt ook de lengte van het gegevenstype toevoegen, zoals we in het bovenstaande voorbeeld hebben gedaan.

Ankers

Het anker verwijst in feite naar het gebruik van het sleutelwoord %TYPE om een ​​variabele te declareren met het gegevenstype dat is gekoppeld aan het gegevenstype van een kolom van een bepaalde kolom in een tabel.

Bekijk een voorbeeld om dit te begrijpen. Stel dat we een tabel WERKNEMERS hebben, dan kunnen we de ankers op de volgende manier gebruiken.

VERKLAREN v_name WERKNEMER.NAME%TYPE; n_leeftijd WERKNEMER.AGE%TYPE;BEGIN NULL;END;/

Opdracht

Het toewijzen van variabelen is vrij eenvoudig, we kunnen de toewijzingsoperator gebruiken om waarden aan een variabele toe te kennen. Het volgende voorbeeld laat zien hoe we waarden aan een variabele kunnen toewijzen.

DECLARE v_name VARCHAR(20); n_cursus VARCHAR(10);BEGIN v_name ="edureka"; v_course ="sql";END;/

Initialisatie

We kunnen ook een waarde voor de variabele in de declaratiesectie initialiseren. Het volgende voorbeeld laat zien hoe we waarden voor een variabele kunnen initialiseren.

DECLAREv_name VARCHAR(20) ="edureka";n_course VARCHAR(10) ="sql";BEGIN NULL;END;/

Nu we weten hoe we met de variabelen kunnen werken, kunnen we proberen te begrijpen hoe we functies in PL/SQL zullen gebruiken.

Functie in PL/SQL

Een functie in PL/SQL is in feite een benoemd blok dat een waarde retourneert. Het is ook bekend als een subroutine of een subprogramma, de volgende syntaxis laat zien hoe we functies in PL/SQL kunnen gebruiken.

CREATE [OR REPLACE] FUNCTION function_name [( 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; UITZONDERING END; /

Allereerst moet u een functienaam opgeven na het trefwoord. De functienaam moet beginnen met een werkwoord. Een functie kan geen, een of meer parameters hebben die we specificeren in parameters. We moeten het gegevenstype van elke parameter expliciet specificeren, en dan komt de modus die een van de volgende kan.

  • IN – De IN-parameter is een alleen-lezen parameter.

  • UIT – Het is een alleen-schrijven parameter

  • IN UIT – De IN OUT-parameter is zowel een lees-schrijfparameter.

Hier is een eenvoudig voorbeeld om te laten zien hoe we functies in PL/SQL gebruiken.

CREER OF VERVANG FUNCTIE try_parse( iv_number IN VARCHAR2) RETURN NUMBER ISBEGIN RETURN to_number(iv_number); UITZONDERING WANNEER anderen DAN NULL TERUGKEREN;END;

Een functie aanroepen

Laten we proberen de functie die we in het volgende voorbeeld in een anoniem blok hebben gemaakt, aan te roepen.

SET SERVEROUTPUT OP GROOTTE 1000000;DECLARE 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_x); DBMS_OUTPUT.PUT_LINE(n_j); DBMS_OUTPUT.PUT_LINE(n_z);END;/

We kunnen de functie ook in een SELECT-statement aanroepen. Nu we weten hoe we functies in PL/SQL kunnen gebruiken, laten we proberen te begrijpen hoe we werken met procedures in PL/SQL.

PL/SQL-procedure

Een procedure is in feite een blok dat een specifieke taak uitvoert. Met behulp van een procedure kunnen we complexe bedrijfslogica inpakken of inkapselen en hergebruiken in zowel de applicatie- als de databaselaag.

Laten we een eenvoudig voorbeeld bekijken om te begrijpen hoe de procedure werkt in PL/SQL

PROCEDURE MAKEN OF VERVANGEN adjust_salary( in_employee_id IN EMPLOYEES.EMPLOYEE_ID%TYPE, in_percent IN NUMBER) ISBEGIN -- update het salaris van de werknemer UPDATE werknemers SET salaris =salaris + salaris * in_percent / 100 WAAR werknemer_id =in_employ;END;eepre> 

In het bovenstaande voorbeeld hebben we twee parameters, de procedure past het salaris aan met een bepaald percentage en het sleutelwoord UPDATE werkt de waarde in de salarisinformatie bij.

Procedurekop

Het gedeelte vóór het trefwoord IS wordt de procedureheader genoemd. Hieronder volgen enkele tips waarmee u vertrouwd moet zijn bij het werken met procedures.

  • schema – Het is de optionele naam van het schema waartoe de procedure behoort.

  • naam – De naam van de procedure die moet beginnen met een werkwoord.

  • parameters – Het is de optionele lijst met parameters.

  • AUTHID – Het bepaalt of de procedure wordt uitgevoerd met het privilege van de huidige gebruiker of de oorspronkelijke eigenaar van de procedure.

Proceduretekst

Alles wat na het IS-sleutelwoord komt, wordt de procedure-body genoemd. We hebben de verklaring, uitzondering en uitvoeringsverklaringen in de procedure-body. In tegenstelling tot de functie wordt het RETURN-sleutelwoord in een procedure gebruikt om de uitvoering te stoppen en de besturing terug te geven aan de aanroeper.

Een procedure aanroepen

Laten we eens kijken hoe we een procedure in PL/SQL kunnen aanroepen.

EXEC procedure_name(param1,param2…paramN);

We kunnen de procedures aanroepen zonder parameters door alleen het EXEC-sleutelwoord en de procedurenaam te gebruiken. Nu we weten hoe we met procedures kunnen werken, kunnen we proberen te begrijpen hoe geneste blokken worden gebruikt in PL/SQL.

Genest blok

Een genest blok is niets anders dan een combinatie van een of meer PL/SQL-blokken om betere controle te krijgen over de uitvoering en uitzonderlijke afhandeling van het programma.

Hier is een eenvoudig voorbeeld van een genest blok.

SET SERVEROUTPUT OP MAAT 1000000;DECLARE n_emp_id EMPLOYEES.EMPLOYEE_ID%TYPE :=&emp_id1;BEGIN DECLARE n_emp_id employee.employee_id%TYPE :=&emp_id2; v_name werknemers.first_name%TYPE; BEGIN SELECTEER voornaam IN v_naam VANAF werknemers WAAR werknemer_id =n_emp_id; DBMS_OUTPUT.PUT_LINE('Voornaam van werknemer ' || n_emp_id || ' is ' || v_name); UITZONDERING WANNEER no_data_found DAN DBMS_OUTPUT.PUT_LINE('Werknemer ' || n_emp_id || ' niet gevonden'); EINDE;END;/

Het buitenste PL/SQL-blok in het bovenstaande voorbeeld staat bekend als het bovenliggende blok of het omsluitende blok, het binnenste blok daarentegen staat bekend als het onderliggende blok of het ingesloten blok.

Het is geen goed idee om de variabelen met dezelfde namen in beide blokken te gebruiken, omdat tijdens de uitvoering de onderliggende blokvariabele de bovenliggende blokvariabele zal overschrijven. Het gebeurt omdat PL/SQL de eerste prioriteit geeft aan de variabele binnen zijn eigen blok.

Blokkeerlabel

We kunnen dit probleem oplossen met het bloklabel dat ons helpt om met behulp van een label naar variabelen in blokken te verwijzen.

Hier is een eenvoudig voorbeeld om te laten zien hoe we een bloklabel kunnen gebruiken.

<>VERKLAREN...BEGIN...END;

Het gebruik van een bloklabel helpt de leesbaarheid van de code te verbeteren, betere controle te krijgen en verwijzingen naar de blokken te maken. Nu we weten hoe we met geneste blokken kunnen werken, kunnen we proberen te begrijpen hoe de IF STATEMENT werkt in PL/SQL.

IF-verklaring

PL/SQL heeft drie ALS-VERKLARINGEN

  • ALS-DAN – Het is de eenvoudigste IF STATEMENT als de voorwaarde waar is, worden de instructies uitgevoerd, als de voorwaarde onwaar is, doet het niets.

  • ALS-DAN-ELSE – Hierin wordt de ELSE-clausule toegevoegd voor een alternatieve reeks instructies.

  • IF-THEN-ELSEIF – Het stelt ons in staat om meerdere testcondities achter elkaar uit te voeren.

IF-THEN-syntaxis

IF voorwaarde THEN sequence_of_statements;END IF;

IF-THEN-ELSE-syntaxis

IF voorwaarde THEN sequence_of_if_statements;ELSE sequence_of_else_statements;END IF;

IF-THEN-ELSEIF-syntaxis

IF condition1 THEN sequence_of_statements1ELSIF condition2 THEN sequence_of_statements2ELSE sequence_of_statements3END IF;

Nu we klaar zijn met de IF STATEMENT, laten we eens kijken naar de CASE-instructie in PL/SQL.

CASE-verklaring

De CASE-instructie helpt in principe bij het uitvoeren van een reeks instructies op basis van een selector. Een selector kan in dit geval alles zijn, het kan een variabele, functie of een eenvoudige uitdrukking zijn. Hier is een eenvoudig voorbeeld om de syntaxis van de CASE-instructie in PL/SQL te tonen.

[<>]CASE [TRUE | selector] WHEN expression1 THEN sequence_of_statements1; WHEN expression2 THEN sequence_of_statements2; ... WHEN expressionN THEN reeks_van_statementsN; [ELSE sequence_of_statementsN+1;]END CASE [label_name];

In de bovenstaande syntaxis komt na het CASE-sleutelwoord de selector. PL/SQL zal de selector slechts één keer evalueren om te bepalen welke instructie moet worden uitgevoerd.

Gevolgd door de selector is het WHEN-sleutelwoord. Als de expressie voldoet aan de selector, wordt de bijbehorende instructie na het THEN-sleutelwoord uitgevoerd.

Nu we weten hoe we een CASE-statement kunnen gebruiken, gaan we proberen te begrijpen hoe we de loop-statements in de PL/SQL gaan gebruiken.

Loop-instructie

Een loop-statement in PL/SQL is een iteratief statement waarmee je een reeks instructies meerdere keren kunt uitvoeren. Hier is een eenvoudig voorbeeld om de syntaxis van een loop-statement in PL/SQL te tonen.

LOOP sequence_of_statements;END LOOP;

Er moet ten minste één uitvoerbaar statement tussen het LOOP- en END LOOP-sleutelwoord staan.

Loop met EXIT-verklaring

Met de EXIT- en EXIT when-statements kunt u de lus verlaten. EXIT WHEN-instructie beëindigt de lus voorwaardelijk terwijl EXIT de uitvoering onvoorwaardelijk beëindigt.

LUS ... VERLATEN WANNEER voorwaarde;END LOOP;

Labellabel

Een luslabel wordt gebruikt om de naam van de lustellervariabele te kwalificeren wanneer deze in een geneste lus wordt gebruikt. Hieronder volgt de syntaxis van een luslabel.

<

Nu we weten hoe we de loop-statements kunnen gebruiken, laten we eens kijken naar while-lus-statements voor een beter begrip.

While-verklaring

We kunnen de WHILE-lusinstructie gebruiken wanneer het aantal uitvoeringen niet is gedefinieerd totdat de uitvoering begint. De volgende syntaxis wordt gebruikt voor een WHILE-lusinstructie in PL/SQL.

WHILE conditionLOOP sequence_of_statements;END LOOP;

De voorwaarde in de syntaxis is een booleaanse waarde of expressie die WAAR, ONWAAR of NULL is. Als de voorwaarde TRUE is, worden de instructies uitgevoerd, als deze FALSE is, stopt de uitvoering en gaat de besturing naar de volgende uitvoerbare instructie.

Nu we weten hoe we een WHILE-lusinstructie kunnen gebruiken, gaan we eens kijken naar de FOR-lusinstructie.

For Loop-instructie

Een FOR-lus-instructie in PL/SQL stelt ons in staat om een ​​reeks instructies een bepaald aantal keren uit te voeren. Hieronder volgt de syntaxis om de FOR-lusinstructie in PL/SQL te gebruiken

FOR loop_counter IN [REVERSE] lower_bound .. upper_boundLOOP sequence_of_statements;END LOOP;

PL/SQL maakt automatisch een lokale variabele loop_counter met een INTEGER-gegevenstype voor de lus, zodat u dit niet expliciet hoeft te declareren. De ondergrens..bovengrens is het bereik waarover de lus itereert. U moet ook ten minste één uitvoerbaar statement hebben tussen LOOP- en END LOOP-trefwoorden.

Nu we weten hoe we de loop-statements in PL/SQL kunnen gebruiken, gaan we eens kijken naar uitzonderlijke verwerking in PL/SQL.

Uitzonderlijke bediening

In PL/SQL wordt elke soort fout als een uitzondering behandeld. Een uitzondering kan worden behandeld als een speciale voorwaarde die de uitvoeringsstroom kan wijzigen of wijzigen. In PL/SQL zijn er twee soorten uitzonderingen.

  • Systeemuitzondering – Het wordt verhoogd door de PL/SQL-runtime wanneer het een fout detecteert.

  • Door de programmeur gedefinieerde uitzondering – Deze uitzonderingen worden gedefinieerd door de programmeur in een specifieke toepassing.

Een uitzondering definiëren

Een uitzondering in PL/SQL moet worden gedeclareerd voordat deze kan worden verhoogd. We kunnen de uitzondering definiëren met het trefwoord EXCEPTION zoals we hebben gedaan in het onderstaande voorbeeld.

EXCEPTION_NAME UITZONDERING;

Om een ​​uitzondering op te heffen, gebruiken we het RAISE-sleutelwoord.

RAISE EXCEPTION_NAME;

Dus dat was alles over PL/SQL, ik hoop dat dit artikel je heeft geholpen bij het toevoegen van waarde aan je kennis. Voor meer informatie over SQL of Databases, kunt u hier onze uitgebreide leeslijst raadplegen:Databases Edureka .

Als je een gestructureerde training over MySQL wilt krijgen, bekijk dan onze MySQL DBA-certificeringstraining die wordt geleverd met een door een instructeur geleide live training en real-life projectervaring. Deze training zal u helpen MySQL diepgaand te begrijpen en u te helpen het onderwerp onder de knie te krijgen.

Heeft u een vraag voor ons? Vermeld het in het opmerkingengedeelte van ”PL/SQL-zelfstudie ” en ik zal contact met je opnemen.


  1. Werken met JDBC-gegevens in Domo

  2. SQL Server Profiler gebruiken | Problemen met SQL Server-prestaties oplossen -5

  3. Hoe u de roosters van werknemers in een database kunt opslaan

  4. Hoe LENGTH() werkt in MariaDB