sql >> Database teknologi >  >> RDS >> Database

Hvordan oprettes lagrede procedurer i SQL?

Procedurer er de underprogrammer, som kan oprettes og gemmes i databasen som databaseobjekter. Ligesom du kan på andre sprog, kan du også oprette og slippe procedurer i SQL. Lad os i denne artikel udforske procedurer i SQL med syntaks og eksempler.

Emnerne diskuteret i artiklen er:

  • Hvad er en procedure i SQL?
  • SQL-proceduresyntaks
  • Eksempel på procedure i SQL
  • Fordele ved SQL-procedurer

Hvad er en procedure i SQL?

En procedure i SQL (ofte omtalt som lagret procedure), er en genbrugelig enhed, der indkapsler applikationens specifikke forretningslogik. En SQL-procedure er en gruppe af SQL-sætninger og logik, kompileret og gemt sammen for at udføre en specifik opgave.

Nedenfor er de vigtigste funktioner i SQL-procedurerne:

  • Nem at implementere, fordi de bruger et meget simpelt højt-niveau, stærkt skrevet sprog
  • Understøtter tre typer parametre, nemlig input-, output- og input-outputparametre.
  • Mere pålidelige end tilsvarende eksterne procedurer.
  • SQL-procedurer fremmer genanvendelighed og vedligeholdelse.
  • Understøtter en enkel, men kraftfuld tilstands- og fejlhåndteringsmodel.
  • Returner en statusværdi til en opkaldsprocedure eller batch for at angive succes eller fiasko og årsagen til fiasko.

Nu hvor du ved, hvad procedurer er, og hvorfor de er nødvendige, så lad os diskutere syntaks og eksempel på procedure i SQL.

Syntaks af procedurer i SQL

Det følgende illustrerer den grundlæggende syntaks for at oprette en procedure i SQL:


CREATE [ OR REPLACE] PROCEDURE procedure_name [
(parameter_name [IN | OUT | IN OUT]  type [ ])]
{IS | AS }
BEGIN [declaration_section]
executable_section 
//SQL statement used in the stored procedure
END
GO

Syntaksterminologier

Parameter

En parameter er en variabel, der indeholder en værdi af enhver gyldig SQL-datatype, hvorigennem underprogrammet kan udveksle værdierne med hovedkoden. Med andre ord bruges parametre til at overføre værdier til proceduren. Der er 3 forskellige typer parametre, som er som følger:

  • IN :Dette er standardparameteren, som altid modtager værdierne fra det kaldende program. Det er en skrivebeskyttet variabel inde i underprogrammerne, og dens værdi kan ikke ændres inde i underprogrammet.
  • UD: Det bruges til at få output fra underprogrammerne.
  • IND UD: Denne parameter bruges både til at give input og til at få output fra underprogrammerne.

Andre terminologier

  • procedurenavn angiver navnet på proceduren. Det skal være unikt.
  • [ELLER ERSTAT] muligheden tillader ændring af en eksisterende procedure.
  • IS | AS-klausul sætter de konteksten til at udføre den lagrede procedure. Forskellen er, at nøgleordet 'IS' bruges, når proceduren er indlejret i nogle andre blokke, og hvis proceduren er selvstændig, bruges 'AS'.
  • Code_Block erklærer de proceduremæssige erklæringer, der håndterer al behandling inden for den lagrede procedure. Indholdet af kodeblokken afhænger af reglerne og det proceduresprog, der bruges af databasen.

Procedure i SQL:Eksempler

Eksempel 1

Følgende eksempel opretter en simpel procedure, der viser velkomstmeddelelsen på skærmen, når den udføres. Derefter vil proceduren være:

CREATE OR REPLACE PROCEDURE welcome_msg
(para1_name IN VARCHAR2)
IS 
BEGIN 
    dbms_output.put_line (‘Hello World! '|| para1_name);
END; 
/

Udfør den lagrede procedure. En selvstændig procedure kan kaldes på to måder −

  • Brug af EXECUTE søgeord
  • At kalde navnet på proceduren fra en SQL-blok

Ovenstående procedure kan kaldes ved at bruge Execute nøgleord som følger:

 EXEC welcome_msg (‘Welcome to Edureka!’);

Output

Hello World! Welcome to Edureka 

Proceduren udføres, og beskeden udskrives som "Hej verden! Velkommen til Edureka”.

Eksempel 2

Lad os antage, at du har en tabel med ansættelsesoplysninger, såsom EmployeId, Firstname, Lastname og DepartmentDetails.

Dette eksempel opretter en SQL-procedure, der returnerer et medarbejdernavn, når EmployeId er angivet som inputparameter til den lagrede procedure. Derefter vil proceduren være:

Create  PROCEDURE GetStudentName 
(
@employeeID INT,                       --Input parameter ,  employeID of the employee
@employeName VARCHAR(50)  OUT  --Output parameter, employeeName of employee
AS
BEGIN
SELECT @employeName= Firstname+' '+Lastname FROM Employee_Table WHERE EmployeId=@employeID
END

Trin til at udføre:

  • Erklær @employeName som nvarchar(50)
  • EXEC GetStudentName 01, @employeName output
  • vælg @employeName

Ovenstående procedure for at give medarbejder-id som input returnerer navnet på den pågældende medarbejder. Antag, at hvis vi har en outputparameter, skal vi først erklære variablen for at indsamle outputværdierne. Lad os nu tjekke fordelene ved procedure i SQL.

Fordele ved procedurer i SQL

Hovedformålet med lagrede procedurer i SQL er at skjule direkte SQL-forespørgsler fra koden og forbedre ydeevnen af ​​databaseoperationer såsom at vælge, opdatere og slette data. Andre fordele ved procedure i SQL er:

  • Reducerer mængden af ​​information, der sendes til databaseserveren. Det kan blive en vigtigere fordel, når netværkets båndbredde er mindre.
  • Aktiverer genbrugelighed af kode
  • Forbedrer sikkerheden, da du kan give brugeren tilladelse til at udføre den lagrede procedure i stedet for at give tilladelse til de tabeller, der bruges i den lagrede procedure.
  • Understøtte indlejrede procedurekald til andre SQL-procedurer eller procedurer implementeret på andre sprog.

For at konkludere øger procedurer i SQL (lagrede procedurer) ikke kun muligheden for at genbruge koden, men øger også databasens ydeevne. Hvordan? Ved at reducere trafikken på netværket ved at reducere mængden af ​​information, der sendes over netværket. Med dette er vi nået til slutningen af ​​denne artikel.

Hvis du ønsker at lære mere om MySQL og lære denne open source relationsdatabase at kende, så tjek vores MySQL DBA Certification Training som kommer med instruktørledet livetræning og projekterfaring i det virkelige liv. Denne træning vil hjælpe dig med at forstå MySQL i dybden og hjælpe dig med at opnå beherskelse over emnet.

Har du et spørgsmål til os? Nævn det venligst i kommentarfeltet i denne 'Procedurer i SQL; artikel, og vi vender tilbage til dig.


  1. UPPER() Funktion i Oracle

  2. Hvad er den bedste måde at automatisk generere INSERT-sætninger til en SQL Server-tabel?

  3. Hvordan kan jeg forespørge på en værdi i SQL Server XML-kolonnen

  4. Implementering af SQL Server Performance Indicator for forespørgsler, lagrede procedurer og triggere