sql >> Databasteknik >  >> RDS >> Database

Hur skapar man lagrade procedurer i SQL?

Procedurer är de underprogram som kan skapas och sparas i databasen som databasobjekt. Precis som du kan på andra språk kan du skapa och släppa procedurer i SQL också. I den här artikeln ska vi utforska procedurer i SQL med syntax och exempel.

Ämnen som diskuteras i artikeln är:

  • Vad är en procedur i SQL?
  • SQL-procedursyntax
  • Exempel på procedur i SQL
  • Fördelar med SQL-procedurer

Vad är en procedur i SQL?

En procedur i SQL (ofta kallad lagrad procedur), är en återanvändbar enhet som kapslar in applikationens specifika affärslogik. En SQL-procedur är en grupp av SQL-satser och logik, kompilerade och lagrade tillsammans för att utföra en specifik uppgift.

Nedan listas nyckelfunktioner i SQL-procedurerna:

  • Lätt att implementera eftersom de använder ett mycket enkelt högnivåspråk, starkt typat språk
  • Stöder tre typer av parametrar, nämligen in-, ut- och input-output-parametrar.
  • Tillförlitligare än motsvarande externa procedurer.
  • SQL-procedurer främjar återanvändbarhet och underhållbarhet.
  • Stöder en enkel, men kraftfull modell för skick och felhantering.
  • Återställ ett statusvärde till en anropsprocedur eller batch för att indikera framgång eller misslyckande och orsaken till misslyckandet.

Nu när du vet vad procedurer är och varför de behövs, låt oss diskutera syntaxen och exemplet på proceduren i SQL.

Syntax för procedurer i SQL

Följande illustrerar den grundläggande syntaxen för att skapa en procedur 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

Syntaxterminologier

Parameter

En parameter är en variabel som innehåller ett värde av valfri giltig SQL-datatyp genom vilken underprogrammet kan utbyta värdena med huvudkoden. Med andra ord används parametrar för att skicka värden till proceduren. Det finns 3 olika typer av parametrar, som är följande:

  • IN :Detta är standardparametern, som alltid tar emot värdena från det anropande programmet. Det är en skrivskyddad variabel i underprogrammen och dess värde kan inte ändras i underprogrammet.
  • UT: Den används för att få utdata från underprogrammen.
  • IN UT: Denna parameter används både för att ge input och för att få utdata från underprogrammen.

Andra terminologier

  • procedurnamn anger namnet på proceduren. Det ska vara unikt.
  • [ELLER ERSÄTT] alternativet tillåter modifiering av en befintlig procedur.
  • IS | AS-klausul ställer de in sammanhanget för att exekvera den lagrade proceduren. Skillnaden är att nyckelordet 'IS' används när proceduren är kapslad i några andra block och om proceduren är fristående används 'AS'.
  • Code_Block deklarerar de procedursatser som hanterar all bearbetning inom den lagrade proceduren. Innehållet i kodblocket beror på reglerna och det procedurspråk som används av databasen.

Procedur i SQL:Exempel

Exempel1

Följande exempel skapar en enkel procedur som visar välkomstmeddelandet på skärmen när det körs. Därefter blir proceduren:

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

Utför den lagrade proceduren. En fristående procedur kan anropas på två sätt −

  • Använda EXECUTE sökord
  • Anropar namnet på proceduren från ett SQL-block

Ovanstående procedur kan anropas med hjälp av nyckelordet Execute enligt följande:

 EXEC welcome_msg (‘Welcome to Edureka!’);

Utgång

Hello World! Welcome to Edureka 

Proceduren utförs och meddelandet skrivs ut som "Hello World! Välkommen till Edureka.”

Exempel2

Låt oss anta att du har en tabell med personaluppgifter, som EmployeId, Firstname, Efternamn och DepartmentDetails.

Det här exemplet skapar en SQL-procedur som returnerar ett anställds namn när EmployeId ges som ingångsparameter till den lagrade proceduren. Därefter blir proceduren:

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

Steg att utföra:

  • Deklarera @anställdsnamn som nvarchar(50)
  • EXEC GetStudentName 01, @anställdsnamn utdata
  • välj @anställdsnamn

Proceduren ovan för att ge anställd-id som indata returnerar namnet på just den anställde. Anta att om vi har en utdataparameter måste vi först deklarera variabeln för att samla utdatavärdena. Låt oss nu kolla in fördelarna med procedurer i SQL.

Fördelar med procedurer i SQL

Huvudsyftet med lagrade procedurer i SQL är att dölja direkta SQL-frågor från koden och förbättra prestandan för databasoperationer som att välja, uppdatera och ta bort data. Andra fördelar med procedurer i SQL är:

  • Minskar mängden information som skickas till databasservern. Det kan bli en viktigare fördel när nätverkets bandbredd är mindre.
  • Möjliggör återanvändning av kod
  • Förbättrar säkerheten eftersom du kan ge användaren behörighet att utföra den lagrade proceduren istället för att ge behörighet till tabellerna som används i den lagrade proceduren.
  • Stödja kapslade proceduranrop till andra SQL-procedurer eller procedurer implementerade på andra språk.

Sammanfattningsvis förbättrar procedurer i SQL (lagrade procedurer) inte bara möjligheten att återanvända koden utan ökar också prestandan hos databasen. På vilket sätt? Genom att minska trafiken i nätverket genom att minska mängden information som skickas över nätverket. Med detta har vi kommit till slutet av denna artikel.

Om du vill lära dig mer om MySQL och lära känna denna relationsdatabas med öppen källkod, kolla in vår MySQL DBA-certifieringsutbildning som kommer med instruktörsledd liveutbildning och verklig projektupplevelse. Den här utbildningen 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ämn det i kommentarsektionen i denna 'Procedurer i SQL; artikel så återkommer vi till dig.


  1. Android Room Embedded Relation ignorerar SQL where-villkor

  2. Hur justify_interval() fungerar i PostgreSQL

  3. Vad är DATALENGTH()-ekvivalenten i MySQL?

  4. Hur man distribuerar applikationer med SQL Server-databas på klienter