Opgeslagen procedure

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een opgeslagen procedure (stored procedure) is een programma dat bewaard wordt binnen een databank. Opgeslagen procedures worden gewoonlijk geschreven in een daarvoor geschikte databanktaal, zoals PL/SQL voor Oracle, PL/pgSQL voor PostgreSQL, of T-SQL voor Microsoft SQL Server. Het voordeel van een opgeslagen procedure is dat ze draait binnen de databank zelf, op de databankserver. Daardoor heeft de procedure direct toegang tot de gegevens die ze moet manipuleren, en moet ze maar alleen de resultaten naar de gebruiker terugsturen. Dit vermijdt het over en weer sturen van grote hoeveelheden gegevens.

Opgeslagen procedures worden meestal gebruikt wanneer een bepaalde groep wijzigingen op de gegevensbank logisch bij elkaar horen. Het is dan verstandig deze wijzigingen te groeperen in één opgeslagen procedure.

Voordelen[bewerken]

De voordelen van opgeslagen procedures zijn:

  • Veel betere onderhoudbaarheid. Opgeslagen procedures laten toe om "modulair" te programmeren. De procedure kan eenmaal worden aangemaakt en bewaard in de database, en vervolgens meermalen opgeroepen in een programma. Opgeslagen procedures kunnen aangemaakt worden door een specialist.
  • Snellere uitvoering. Als de bewerking veel code bevat, of dikwijls herhaald wordt, dan zijn opgeslagen procedures sneller dan herhaalde SQL-opdrachten. Ze kunnen eenmaal ontleed en geoptimaliseerd worden, en daarna kunnen ze in het geheugen blijven. Omdat de procedure in gecompileerde vorm opgeslagen wordt, is het niet nodig de procedure telkens te compileren wanneer ze uitgevoerd wordt.
  • Ze kunnen het netwerkverkeer verminderen. Een operatie die honderden regels SQL-code vereist kan uitgevoerd worden met één enkele opdracht over het netwerk.
  • Ze kunnen gebruikt worden als een beveiligingstechniek. Gebruikers kunnen het recht krijgen een opgeslagen procedure uit te voeren, zelfs als ze niet het recht hebben de afzonderlijke opdrachten in de procedure direct uit te voeren.