[G_PRO] Databanken
  • Welkom
  • Inleiding
    • Benodigdheden
    • Nuttige extra's
    • Mee helpen?
  • Semester 1: databanken intro
    • Installatie van alle software
    • Databanken
      • Inleiding
      • Voorbeeld
      • Wat is een relationele databank
      • Basisstructuren van een relationele databank
      • Diagramnotatie
    • (My)SQL
      • DDL
        • Datatypes
          • Enum
        • CREATE
        • ALTER
        • DROP
        • Sleutels voor identificatie
        • Primaire sleutel toevoegen/verwijderen
        • Primaire sleutel in een nieuwe tabel
        • Vreemde sleutels
        • Relaties-voorstellen
        • Labo
      • DML
        • INSERT
        • UPDATE
        • DELETE
        • LIKE
        • Logische operatoren
        • Vergelijkingen
        • SELECT sorteren
        • Functies
        • Labo
      • SELECT
        • SELECT met clausules
        • SELECT met WHERE
      • Groeperen en samenvatten
        • Aggregaatfuncties
        • SELECT met GROUP BY
        • SELECT met HAVING
        • IN
        • BETWEEN
        • SELECT DISTINCT
        • Labo
      • JOINS
        • JOINs bij simpele relaties
        • JOINs via tussenliggende tabel
        • UPDATE van JOIN
      • apTunes project
  • PRO (GEEN LEERSTOF EN/OF IN OPBOUW)
    • PRO
      • Waarom een databank?
      • Een databank ontwerpen
      • ERM
        • Basisbegrippen
        • Constraints (voorwaarden, beperkingen)
        • Keys (Sleutels)
        • Discussiepunten bij ontwerp in ERM
        • Aanvullende begrippen
        • Herleiden van ERD's tot tabellen
        • Voorbeeld
        • Bibliografie
        • Labo oefeningen
      • NoSQL
      • Blockchain
  • SEMESTER 2: DATABANKEN
    • Join
      • INNER JOIN
      • LEFT JOIN
      • COALESCE
      • RIGHT JOIN
      • LEFT EXCLUDING JOIN
      • RIGHT EXCLUDING JOIN
      • OUTER JOIN
      • OUTER EXCLUDING JOIN
      • Samenvattende flowchart
      • Labo oefeningen
    • Views
      • CREATE
      • ALTER
      • DROP
      • UPDATE
      • RENAME
      • BESLUIT
      • Labo oefeningen
    • Subqueries
      • Een onafhankelijke subquery
      • Subqueries met tijdelijke opslag
      • Labo oefeningen
    • Indexeren
      • mogelijkheden
      • CREATE
      • DROP
      • UNIQUE
      • trage queries opvolgen
    • ERD
      • Referentiële beperkingen
      • Overzicht
      • Labo oefeningen
    • Stored programs
      • Stored procedures
      • CREATE
      • DROP
      • DELIMITER
      • Variabelen
      • Parameters
      • Gerelateerde data invoegen
      • IF -THEN-ELSE-ELSEIF
      • LOOP
      • WHILE
      • REPEAT
      • SIGNAL
      • Error handling
      • RESIGNAL
      • Stored functies
      • Triggers
      • Cursors
      • Transacties en rollbacks
      • Object access control
      • Oefeningen basisgebruik stored procedures
      • Oefeningen control flow
      • Oefeningen stored functions
      • Oefeningen triggers
      • Oefeningen error handling
      • Oefeningen transacties en access control
Powered by GitBook
On this page

Was this helpful?

Export as PDF
  1. SEMESTER 2: DATABANKEN
  2. Stored programs

RESIGNAL

Met dit statement kan je een fout (gedeeltelijk) afhandelen, maar toch de omringende omgeving op de hoogte brengen van wat zich heeft voorgedaan. Vergelijk het met de lector die een vraag krijgt van een student en deze niet volledig kan afhandelen. Hij onderneemt een aantal stappen, maar brengt uiteindelijk de vakgroepcoördinator op de hoogte. Die kan eventueel zelfs het opleidingshoofd op de hoogte brengen. Een fout kan dus steeds "naar boven" doorgegeven worden.

Ee ander voorbeeld is een telefoontje naar de helpdesk. Typisch kan de persoon aan de telefoon je helpen. Als dat niet zo is, belt die naar een technische dienst of ombudsman. Indien het om een zeer ernstige klacht gaat, wordt ze doorgegeven aan management,...

Het RESIGNAL-statement (dat een signaal "doorgeeft") is gelijkaardig aan het SIGNAL-statement, behalve:

  • RESIGNAL kan je enkel gebruiken binnen een handler (SIGNAL daarentegen kan je eender waar gebruiken)

  • Je kan alle attributen aanpassen of weglaten, zelfs de SQLSTATE

Hieronder een voorbeeld.

USE `aptunes`;
DROP procedure IF EXISTS `DemoResignal`;
DELIMITER $$
USE `aptunes`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `DemoResignal`(
    IN releaseBand INT,
    IN releaseAlbum INT
)
BEGIN
    DECLARE DuplicateValue CONDITION FOR 1062;
    DECLARE EXIT HANDLER FOR DuplicateValue 
    BEGIN
        SELECT CONCAT('Dubbele waarde (',releaseBand,',',releaseAlbum,') niet toegestaan') AS Message;
        -- aanpassing van een attribuut
        RESIGNAL SET MESSAGE_TEXT = 'RESIGNAL voorbeeld: Dubbele waarde niet toegestaan';
    END;
    INSERT INTO Albumreleases(Bands_Id,Albums_Id)
    VALUES(releaseBand,releaseAlbum);
    SELECT COUNT(*)
    FROM Albumreleases
    WHERE Bands_Id = releaseBand;
END$$
DELIMITER ;

Wanneer we deze stored procedure aanroepen met een waarde die reeds voorkomt, dan krijgen we niet enkel een gepaste boodschap in het resultatenscherm, maar ook een boodschap in het output-venster.

PreviousError handlingNextStored functies

Last updated 2 years ago

Was this helpful?