Lagrade procedurer i MySQL: Hur använder man dem?

Senaste uppdateringen: Maj 25 2025
Författare: TecnoDigital
  • Lagrade procedurer i MySQL inkapslar SQL-operationer, vilket förbättrar kodens modularitet och återanvändning.
  • De erbjuder säkerhet och dataåtkomstkontroll på procedurnivå.
  • De minskar klient-/servertrafiken och förbättrar prestandan vid utförande av uppgifter.
  • De är lätta att återanvända och kan anropas från olika programmeringsspråk.
Lagrade procedurer i MySQL

Lagrade procedurer är rutiner lagrade i MySQL-databasen som kapslar in SQL-operationer och programmeringslogik. De fungerar som miniprogram som kan anropas för att utföra repetitiva eller komplexa uppgifter.

De erbjuder flera fördelar som modularitet, kodåteranvändning, större säkerhet och bättre prestanda. Därför är det viktigt att behärska lagrade procedurer för alla MySQL-utvecklare eller administratörer.

Nedan ser vi exakt vad de är, deras fördelar, hur man skapar och använder lagrade procedurer i MySQL steg för steg och några praktiska exempel så att du kan få ut det mesta av dem.

Vad är lagrade procedurer i MySQL?

Lagrade procedurer är uppsättningar av förkompilerade SQL-instruktioner som lagras i MySQL-databasen med ett namn och in- och utdataparametrar.

De kan anropas med namn genom att skicka värden för deras parametrar. När de körs utför de de operationer som definieras inom dem, såsom frågor, uppdateringar, flödeskontrolllogik och mer.

De är som miniprogram som finns i databasen som kapslar in komplexa operationer för:

  • Förenkla repetitiva administrativa uppgifter
  • Centralisera affärslogik på servern
  • Minska klient/servertrafik
  • Förbättra prestandan när du förkompilerar en fråga

När de lagras på servern ger de önskvärda funktioner som:

  • Modularitet: De bryter ner logiken i hanterbara bitar.
  • Återanvändning: Eliminera kodduplicering.
  • säkerhet: Behörigheter på procedurnivå.
  • Dölja logik: Kunden ser inte interna detaljer.

Kort sagt, lagrade procedurer är ett mycket användbart verktyg för MySQL-utvecklare. Låt oss titta på dess främsta fördelar mer i detalj.

  Python och databaser: The Ultimate Beginner's Guide

Fördelar med att använda lagrade procedurer

Lagrade procedurer ger viktiga fördelar:

1. Bättre organisation och underhåll av kod

De tillåter komplexa operationer att moduleras till separata, lätthanterliga delar. Koden kan återanvändas från flera ställen genom att anropa den lagrade proceduren.

Detta leder till mer organiserad, underhållbar kod med mindre duplicering.

2. Minskning av trafik mellan klient och server

Genom att lagras på servern minskar överföringen av information eftersom det inte är nödvändigt att skicka SQL-frågor varje gång. Detta förbättrar prestandan.

3. Snabbare operationer och transaktioner

MySQL kompilerar bara proceduren en gång och återanvänder den. Detta påskyndar exekveringen genom att eliminera behovet av att kompilera om varje gång.

Dessutom kan de användas för att kapsla in komplexa transaktioner som kommer att utföras snabbare.

4. Ökad säkerhet och behörigheter

Behörigheter och privilegier kan tilldelas på nivån för lagrad procedur, snarare än att ge full åtkomst till databastabeller.

Detta möjliggör större kontroll över data och operationer som användare kan utföra.

5. Lätt att använda och underhålla av andra utvecklare

Eftersom de delas i databasen kan alla utvecklare med behörigheter utföra procedurerna utan att känna till sin interna kod. För att lära dig mer om behörighetshantering, se Användare i MySQL.

Detta underlättar underhållet och minskar felen.

6. Portabilitet mellan olika applikationer

Eftersom dess logik finns i databasen kan den anropas från vilket programmeringsspråk som helst som stöder den, inklusive att skapa funktioner i MySQL.

Hur man skapar lagrade procedurer i MySQL

Att skapa en lagrad procedur i MySQL är enkelt med SQL-syntax:

SKAPA PROCEDUR procedurnamn()
BÖRJA
instruktioner;
SLUT

  SQL Server 2019: Nya funktioner och funktioner

Proceduren skapas med ett unikt namn och mellan BEGIN – END placerar vi SQL-satserna som ska köras när den anropas.

Till exempel registrerar den här proceduren en ny försäljning:

SKAPA PROCEDUR insert_sale(
p_värde FLYTTTAL,
p_klient VARCHAR(50)
)
BÖRJA
INSERT INTO sales(värde, kund)
VÄRDEN(p_värde, p_klient);
SLUT

Denna procedur tar emot parametrarna p_valor och p_cliente, infogar en ny försäljning i försäljningstabellen och returnerar det automatiskt genererade ID:t. Om du vill utöka dina kunskaper om datahantering, se MySQL-frågor i PHP med exempel.

Procedurer stöder även mer avancerad kod som lokala variabler, markörer, felhantering med BEGIN-EXCEPTION-END, etc.

Hur man använder lagrade procedurer i MySQL

När den lagrade proceduren väl har skapats kan den anropas i valfri SQL-fråga med CALL:

CALL procedurnamn(parametervärde1, parametervärde2);

Till exempel, för att infoga en rea:

CALL infoga_försäljning(125.50, 'Juan Perez');

Procedurer kan också anropas från vilket programmeringsspråk som helst genom att skicka värden till parametrarna. Som ett exempel, i PHP:

$resultat = $mysqli->query("CALL insert_sale(125.50, 'Juan Perez')");

Och från Java:

CallableStatement stmt = conn.prepareCall("{CALL insert_sale(?, ?)}");
stmt.setDouble(1, 125.50);
stmt.setString(2, "John Perez");
stmt.executeUpdate();

Exempel på lagrade procedurer i MySQL

Låt oss titta på några praktiska exempel för att bättre utnyttja denna kraftfulla MySQL-funktion:

Få total försäljning per kund

SKAPA PROCEDUR total_sales_customer(IN p_customer VARCHAR(50))
BÖRJA
VÄLJ SUMMA(värde) SOM total
FRÅN försäljning
DÄR klient = p_klient;
SLUT

använda:

CALL total_sales_customer('Ana Valdez');

Lista produkter under ett givet pris

SKAPA PROCEDUR billiga_produkter(IN p_pris DECIMAL(10,2))
BÖRJA
VÄLJ ID, namn, pris FRÅN produkter
DÄR pris <= p_pris;
SLUT

använda:

CALL billiga_produkter(500);

Ta bort och infoga poster igen

SKAPA PROCEDUR regenerate_table()
BÖRJA
TA BORT FRÅN min_tabell;
— Infoga nya poster
END;

Användbart för att återskapa testtabeller. För ytterligare information om databasstruktur, se databaselement.

  Exempel på databasutveckling för en webbutik

Ring en annan intern procedur

SKAPA PROCEDUR my_procedure()
BÖRJA
CALL annan_procedur();

— fler instruktioner
END;

Låter dig bryta ner i återanvändbara delar.

Överför pengar mellan konton

SKAPA PROCEDUR överföring(
p_cuentaorigen INT,
p_cuentaDestino INT,
p_decimalbelopp(10,2)
)
BÖRJA
STARTA TRANSAKTIONEN;

UPPDATERA konton
SET saldo = saldo – p_belopp
DÄR id = p_cuentaOrigen;

UPPDATERA konton
SET saldo = saldo + p_belopp
DÄR id = p_cuentaDestino;

BEGÅ;
END;

Kapslar in överföringslogiken i en transaktion.

Slutsatser om lagrade procedurer

Lagrade procedurer är en kraftfull funktion i MySQL som alla utvecklare bör behärska. För att lära dig mer om andra relaterade funktioner, se relationsdatabaser.

De låter dig modularisera komplexa operationer, återanvända kod, minska trafiken mellan klient och server, förbättra prestanda och säkerhet.

Förutom lagrade procedurer erbjuder MySQL en mängd olika funktioner som också är viktiga för alla utvecklare. Dessa funktioner gör att specifika och komplexa operationer kan utföras på ett effektivt och modulärt sätt. Några av de mest använda funktionerna i MySQL inkluderar "CONCAT" för att sammanfoga strängar, "SUBSTRING" för att extrahera delsträngar och matematiska funktioner som "ROUND" och "CEIL" för avrundning. och du kan också

Lagrade procedurer i MySQL
Relaterad artikel:
Lagrade procedurer i MySQL: En komplett guide