La depuració de codi és una habilitat essencial per a qualsevol programador. En aquest tema, aprendrem com depurar codi PL/SQL de manera eficient, identificant i corregint errors per assegurar que el nostre codi funcioni correctament.
Objectius
- Comprendre la importància de la depuració de codi.
- Aprendre a utilitzar les eines de depuració disponibles.
- Identificar i corregir errors comuns en PL/SQL.
- Utilitzar tècniques de depuració per millorar la qualitat del codi.
- Importància de la Depuració de Codi
La depuració de codi és crucial per:
- Identificar errors: Trobar i corregir errors en el codi.
- Millorar el rendiment: Optimitzar el codi per a un millor rendiment.
- Assegurar la qualitat: Garantir que el codi compleixi amb els requisits funcionals i no funcionals.
- Eines de Depuració
2.1. DBMS_OUTPUT
El paquet DBMS_OUTPUT
permet enviar missatges de depuració a la consola. És útil per a la depuració bàsica.
Exemple:
BEGIN DBMS_OUTPUT.PUT_LINE('Iniciant el procés...'); -- Codi PL/SQL DBMS_OUTPUT.PUT_LINE('Procés completat.'); END; /
2.2. DBMS_DEBUG
El paquet DBMS_DEBUG
proporciona funcionalitats avançades de depuració, com ara punts de ruptura i seguiment de l'execució.
2.3. Oracle SQL Developer
Oracle SQL Developer és una eina gràfica que ofereix funcionalitats de depuració, com ara punts de ruptura, seguiment de variables i execució pas a pas.
- Identificació i Correcció d'Errors
3.1. Errors de Sintaxi
Els errors de sintaxi són fàcils d'identificar perquè Oracle els reporta immediatament.
Exemple:
Error: Falta el punt i coma després de 'Hola Món'.
3.2. Errors de Temps d'Execució
Aquests errors es produeixen durant l'execució del codi.
Exemple:
Error: Si v_variable
no està declarat, es produirà un error.
3.3. Errors Lògics
Els errors lògics són més difícils d'identificar perquè el codi pot executar-se sense errors, però no produeix els resultats esperats.
Exemple:
DECLARE v_sum NUMBER; BEGIN v_sum := 1 + 'a'; -- Error lògic DBMS_OUTPUT.PUT_LINE('La suma és: ' || v_sum); END; /
Error: Intentar sumar un número amb una cadena.
- Tècniques de Depuració
4.1. Utilitzar Missatges de Depuració
Inserir missatges de depuració en punts crítics del codi per seguir el flux d'execució.
Exemple:
BEGIN DBMS_OUTPUT.PUT_LINE('Iniciant el procés...'); -- Codi PL/SQL DBMS_OUTPUT.PUT_LINE('Procés completat.'); END; /
4.2. Punts de Ruptura
Utilitzar punts de ruptura per aturar l'execució en punts específics i inspeccionar l'estat del programa.
4.3. Seguiment de Variables
Monitoritzar el valor de les variables durant l'execució per assegurar-se que contenen els valors esperats.
Exercici Pràctic
Exercici 1: Depuració amb DBMS_OUTPUT
- Escriu un bloc PL/SQL que calculi la suma dels primers 10 números naturals.
- Utilitza
DBMS_OUTPUT.PUT_LINE
per mostrar el valor de la suma en cada iteració.
Solució:
DECLARE v_sum NUMBER := 0; BEGIN FOR i IN 1..10 LOOP v_sum := v_sum + i; DBMS_OUTPUT.PUT_LINE('Suma fins a ' || i || ' és: ' || v_sum); END LOOP; END; /
Exercici 2: Identificació d'Errors
- Escriu un bloc PL/SQL amb un error de sintaxi i un error de temps d'execució.
- Corregeix els errors i explica com els has identificat.
Solució:
-- Bloc amb errors DECLARE v_sum NUMBER; BEGIN v_sum := 1 + 'a'; -- Error lògic DBMS_OUTPUT.PUT_LINE('La suma és: ' || v_sum); END; /
Correcció:
-- Bloc corregit DECLARE v_sum NUMBER; BEGIN v_sum := 1 + 1; -- Correcció de l'error lògic DBMS_OUTPUT.PUT_LINE('La suma és: ' || v_sum); END; /
Explicació: L'error es va identificar perquè Oracle va reportar un error de tipus de dades incompatible.
Conclusió
La depuració de codi PL/SQL és una habilitat essencial que ajuda a identificar i corregir errors, millorant la qualitat i el rendiment del codi. Utilitzant eines com DBMS_OUTPUT
, DBMS_DEBUG
i Oracle SQL Developer, podem depurar el nostre codi de manera eficient. Practicar aquestes tècniques ens permetrà escriure codi més robust i fiable.
Curs de PL/SQL
Mòdul 1: Introducció a PL/SQL
Mòdul 2: Fonaments de PL/SQL
- Estructura del bloc PL/SQL
- Variables i tipus de dades
- Estructures de control
- Cursors
- Gestió d'excepcions