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
- Rendiment: Els procediments emmagatzemats es compilen i s'emmagatzemen a la base de dades, la qual cosa pot millorar el rendiment.
- Reutilització: Un cop creats, es poden reutilitzar en diferents aplicacions i contextos.
- Seguretat: Permeten controlar l'accés a les dades i les operacions que es poden realitzar.
- 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
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
Exemple pràctic
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
.
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ó
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
- Oblidar els paràmetres: Assegura't de definir i passar correctament els paràmetres d'entrada.
- No gestionar errors: Utilitza blocs
TRY...CATCH
per gestionar errors dins dels procediments. - 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
- Utilitzar LIKE per a coincidències de patrons
- Operadors IN i BETWEEN
- Valors NULL i IS NULL
- Agrupar dades amb GROUP BY
- Clàusula HAVING
Mòdul 5: Manipulació de dades
Mòdul 6: Funcions avançades de SQL
Mòdul 7: Subconsultes i consultes niades
- Introducció a les subconsultes
- Subconsultes correlacionades
- EXISTS i NOT EXISTS
- Utilitzar subconsultes en les clàusules SELECT, FROM i WHERE
Mòdul 8: Índexs i optimització del rendiment
- Comprendre els índexs
- Crear i gestionar índexs
- Tècniques d'optimització de consultes
- Analitzar el rendiment de les consultes
Mòdul 9: Transaccions i concurrència
- Introducció a les transaccions
- Propietats ACID
- Instruccions de control de transaccions
- Gestionar la concurrència
Mòdul 10: Temes avançats
Mòdul 11: SQL en la pràctica
- Casos d'ús del món real
- Millors pràctiques
- SQL per a l'anàlisi de dades
- SQL en el desenvolupament web