Introducció

Els procediments emmagatzemats són blocs de codi SQL que es poden guardar i reutilitzar. Són molt útils per encapsular lògica de negoci complexa, millorar el rendiment i la seguretat, i facilitar la gestió del codi SQL. En aquest tema, aprendrem què són els procediments emmagatzemats, com crear-los, executar-los i gestionar-los.

Què és un procediment emmagatzemat?

Un procediment emmagatzemat és un conjunt d'instruccions SQL que es poden guardar a la base de dades i executar posteriorment. Els procediments emmagatzemats poden acceptar paràmetres d'entrada, retornar valors de sortida i realitzar operacions complexes.

Avantatges dels procediments emmagatzemats

  1. Rendiment: Els procediments emmagatzemats es compilen i s'emmagatzemen a la base de dades, la qual cosa pot millorar el rendiment.
  2. Reutilització: Un cop creats, es poden reutilitzar en diferents aplicacions i contextos.
  3. Seguretat: Permeten controlar l'accés a les dades i les operacions que es poden realitzar.
  4. Mantenibilitat: Faciliten la gestió del codi SQL, ja que es poden modificar sense afectar les aplicacions que els utilitzen.

Crear un procediment emmagatzemat

Sintaxi bàsica

CREATE PROCEDURE nom_procediment
AS
BEGIN
    -- Instruccions SQL
END;

Exemple pràctic

Suposem que volem crear un procediment emmagatzemat que insereixi un nou registre a la taula empleats.

CREATE PROCEDURE InsertarEmpleat
    @Nom NVARCHAR(50),
    @Cognom NVARCHAR(50),
    @Edat INT,
    @Departament NVARCHAR(50)
AS
BEGIN
    INSERT INTO empleats (Nom, Cognom, Edat, Departament)
    VALUES (@Nom, @Cognom, @Edat, @Departament);
END;

Explicació del codi

  • CREATE PROCEDURE InsertarEmpleat: Defineix el nom del procediment.
  • @Nom NVARCHAR(50), @Cognom NVARCHAR(50), @Edat INT, @Departament NVARCHAR(50): Defineix els paràmetres d'entrada.
  • BEGIN ... END: Conté les instruccions SQL que s'executaran quan es cridi el procediment.

Executar un procediment emmagatzemat

Sintaxi bàsica

EXEC nom_procediment paràmetre1, paràmetre2, ...;

Exemple pràctic

EXEC InsertarEmpleat 'Joan', 'Pérez', 30, 'IT';

Aquest codi executa el procediment InsertarEmpleat amb els valors especificats.

Gestionar procediments emmagatzemats

Modificar un procediment emmagatzemat

Per modificar un procediment emmagatzemat, utilitzem la instrucció ALTER PROCEDURE.

ALTER PROCEDURE InsertarEmpleat
    @Nom NVARCHAR(50),
    @Cognom NVARCHAR(50),
    @Edat INT,
    @Departament NVARCHAR(50)
AS
BEGIN
    INSERT INTO empleats (Nom, Cognom, Edat, Departament)
    VALUES (@Nom, @Cognom, @Edat, @Departament);
    -- Afegim una nova instrucció
    SELECT * FROM empleats WHERE Nom = @Nom;
END;

Eliminar un procediment emmagatzemat

Per eliminar un procediment emmagatzemat, utilitzem la instrucció DROP PROCEDURE.

DROP PROCEDURE InsertarEmpleat;

Exercicis pràctics

Exercici 1

Crea un procediment emmagatzemat anomenat ObtenirEmpleat que accepti un paràmetre @ID i retorni la informació de l'empleat amb aquest ID.

Solució

CREATE PROCEDURE ObtenirEmpleat
    @ID INT
AS
BEGIN
    SELECT * FROM empleats WHERE ID = @ID;
END;

Exercici 2

Modifica el procediment InsertarEmpleat per retornar l'ID del nou empleat inserit.

Solució

ALTER PROCEDURE InsertarEmpleat
    @Nom NVARCHAR(50),
    @Cognom NVARCHAR(50),
    @Edat INT,
    @Departament NVARCHAR(50)
AS
BEGIN
    INSERT INTO empleats (Nom, Cognom, Edat, Departament)
    VALUES (@Nom, @Cognom, @Edat, @Departament);
    
    SELECT SCOPE_IDENTITY() AS NouID;
END;

Errors comuns i consells

  1. Oblidar els paràmetres: Assegura't de definir i passar correctament els paràmetres d'entrada.
  2. No gestionar errors: Utilitza blocs TRY...CATCH per gestionar errors dins dels procediments.
  3. No documentar: Documenta els teus procediments per facilitar la seva comprensió i manteniment.

Conclusió

Els procediments emmagatzemats són una eina poderosa per gestionar la lògica de negoci a la base de dades. Hem après a crear, executar i gestionar procediments emmagatzemats, així com a evitar errors comuns. En el proper tema, explorarem els triggers, una altra funcionalitat avançada de SQL.

Curs de SQL

Mòdul 1: Introducció a SQL

Mòdul 2: Consultes bàsiques de SQL

Mòdul 3: Treballar amb múltiples taules

Mòdul 4: Filtratge avançat de dades

Mòdul 5: Manipulació de dades

Mòdul 6: Funcions avançades de SQL

Mòdul 7: Subconsultes i consultes niades

Mòdul 8: Índexs i optimització del rendiment

Mòdul 9: Transaccions i concurrència

Mòdul 10: Temes avançats

Mòdul 11: SQL en la pràctica

Mòdul 12: Projecte final

© Copyright 2024. Tots els drets reservats