Uitleg over Stored Procedures en Cursors in Databases

WI
Wilan
3 min. leestijd
Stored Procedure & Cursor

Stored Procedure

Een stored procedure is een verzameling SQL-instructies, of kan worden gezien als een subprogramma met een specifieke naam dat in de database wordt opgeslagen.

Het proces dat een stored procedure uitvoert, is het ontvangen van invoerparameters, het retourneren van waarden in de vorm van uitvoerparameters aan de aanroeper, en het uitvoeren van gegevensverwerkingsoperaties in de database die worden uitgevoerd door een programma zoals een trigger of andere stored procedure.

Het gebruik van stored procedures heeft verschillende voordelen, namelijk:

  • Verbetert de prestaties van de applicatie, omdat de gemaakte stored procedure sneller wordt uitgevoerd dan de SQL-instructie die door de applicatie wordt verzonden en nog niet is gecompileerd.
  • Vermindert het netwerkverkeer tussen database en applicatie, omdat het niet nodig is om niet-gecompileerde SQL te verzenden.
  • Kan herhaaldelijk en transparant worden gebruikt in alle applicaties.

Desondanks heeft het gebruik van stored procedures ook enkele nadelen, namelijk:

  • Kan niet worden gedebugd.
  • Verhoogt de belasting van de serverhardware.
  • Het schrijven ervan is niet gemakkelijk en vereist specifieke kennis.

Syntax van Stored Procedures

De syntax van een stored procedure is als volgt:

Syntax voor het schrijven van een Stored Procedure

DELIMITER //

CREATE PROCEDURE nama_procedure()
BEGIN
    query sql
END //

DELIMITER ;

Syntax voor het aanroepen van een Stored Procedure

CALL nama_procedure();

Syntax voor het declareren van variabelen in een Stored Procedure

DECLARE nama_variable tipedata(panjang) DEFAULT nilai;

Syntax van Stored Procedure met parameters

Er zijn drie modi voor parameters, namelijk:

  • IN
    De standaardvorm van de parameter, waarbij alle wijzigingen in de stored procedure de parameter niet beïnvloeden.

  • OUT
    Een modus die de waarde van de parameter wijzigt en vervolgens terugstuurt naar de aanroeper.

  • INOUT
    Een combinatie van IN en OUT.

Voorbeeld van syntax voor het definiëren van een Stored Procedure met parameters

DELIMITER //

CREATE PROCEDURE nama_procedure(
    [mode] [parameter] [tipe_data]
)
BEGIN
    query sql
END //

DELIMITER ;

Voorbeeld van syntax voor het aanroepen van een Stored Procedure met parameters

CALL nama_procedure([nilai_parameter]);

Cursor

Een cursor is een databaseobject dat wordt gebruikt om de verwerking van specifieke SQL-instructies vast te houden, of kan worden gezien als een variabele die het resultaat van een query met meerdere rijen of records bevat.

Een cursor kan itereren over het aantal rijen in een tabel. Er zijn verschillende eigenschappen van een cursor, namelijk:

  • Kan niet worden bijgewerkt (read only).
  • Een cursor beweegt slechts in één richting (non-scrollable).
  • Het wordt niet aanbevolen om de tabel te updaten waarnaar de cursor verwijst, omdat dit ongewenste resultaten kan opleveren (asensitive).

Syntax van Cursors

Er zijn verschillende stappen in het maken van een cursor, namelijk:

1. Declare

Stap voor het declareren van een cursor, met syntax:

DECLARE nama_cursor CURSOR FOR
pernyataan_SELECT;

2. Open

Stap voor het openen of activeren van een cursor, met syntax:

OPEN nama_cursor;

3. Fetch

Stap voor het ophalen van gegevens uit de cursor en deze vervolgens op te slaan in een variabele, met syntax:

FETCH nama_cursor INTO daftar_variabel;

4. Close

Stap voor het deactiveren van een cursor, met syntax:

CLOSE nama_cursor;

Verschil tussen Stored Procedure en Cursor

Het verschil tussen een stored procedure en een cursor is dat een stored procedure alleen declaratie-instructies van MySQL bevat, terwijl een cursor zowel het queryresultaat als een pointer naar het queryresultaat bevat.

Dit stelt de cursor in staat complexe bewerkingen uit te voeren die niet mogelijk zijn met een stored procedure. Een daarvan is het itereren over records.

W

Geschreven door

Wilan

Vaste bijdrager van Bali Island Tekno die actief kennis deelt over technologie, programmeren en de wereld van software-engineering.

Terug naar Home Bijgewerkt op: 5 juni 2026