Stored procedure
Wat is een stored procedure?
Een stored procedure is een stuk SQL-logica dat in de database zelf opgeslagen staat. Je roept de procedure aan met parameters, en de database voert de vastgelegde stappen uit.
Een procedure kan data lezen, wijzigen, tijdelijke tabellen vullen, controles doen of meerdere statements in één transactie uitvoeren. Ze wordt vaak gebruikt voor herhaalbare databaseprocessen.
Een eenvoudig voorbeeld:
CREATE PROCEDURE close_month @period char(7)
AS
BEGIN
INSERT INTO monthly_sales(period, total_amount)
SELECT @period, SUM(amount)
FROM orders
WHERE FORMAT(order_date, 'yyyy-MM') = @period;
END;De syntax verschilt per database. Het principe blijft: de logica staat dicht bij de data.
Wanneer gebruik je een stored procedure?
Herhaalbare databasebewerkingen. Dezelfde stappen moeten veilig en consistent uitgevoerd worden.
Datavalidatie dicht bij de bron. De database controleert regels voordat data verder gaat.
Performancegevoelige logica. Je vermijdt dat grote datasets heen en weer gaan tussen applicatie en database.
Legacy-systemen. Veel ERP- en financiële systemen gebruiken procedures als officiële uitbreidingspunten.
Stored procedure versus view
Een view is een opgeslagen query die zich gedraagt als een tabel. Je leest eruit. Een stored procedure voert stappen uit en kan parameters, writes, foutafhandeling en transacties bevatten.
Gebruik een view wanneer je een herbruikbare leeslaag wil. Gebruik een procedure wanneer er proceslogica of wijzigingslogica nodig is.
Stored procedure versus pipeline
In moderne datastacks verhuist transformatielogica vaak naar ETL, ELT, dbt of orchestrators. Dat maakt versiebeheer, testen en observability makkelijker. Toch blijven procedures nuttig voor logica die heel dicht bij een database moet blijven.
De vraag is dus niet of procedures goed of slecht zijn. De vraag is waar je logica het best beheert, test en auditeert.
Waar moet je op letten bij stored procedures
Zet ze in versiebeheer. Procedures die alleen in de database leven zijn moeilijk te reviewen.
Vermijd verborgen businesslogica. Als KPI-definities in procedures zitten, moet het datateam ze kunnen lezen.
Log uitvoering. Voor batchprocessen wil je weten wanneer een procedure draaide en met welke parameters.
Let op rechten. Procedures kunnen toegang abstraheren, maar mogen geen achterdeur worden.