CH1: Les blocs anonymes
Un bloc anonyme est un bloc PL/SQL sans nom, non stocké, utilisé pour exécuter des instruction
Structure :
DECLARE -- Section déclarative (optionnelle)
BEGIN -- Section exécutable (obligatoire)
EXCEPTION -- Section de gestion des erreurs (optionnelle)
END;
Types de données :
- NUMBER, VARCHAR2, DATE, BOOLEAN
- %TYPE, %ROWTYPE, RECORD
Structures de contrôle :
- IF, CASE, LOOP, WHILE, FOR
Instruction SELECT INTO :
- Affecte le résultat d·une requête à des variables.
CH2: Les curseurs
Un curseur est un pointeur vers un ensemble de résultats d·une requête SQL.
Types :
- Implicites : gérés automatiquement.
- Explicites : déclarés manuellement.
Étapes d·utilisation :
1. DECLARE CURSOR
2. OPEN
3. FETCH
4. CLOSE
Attributs :
- %ISOPEN, %FOUND, %NOTFOUND, %ROWCOUNT
Simplifications :
- Utilisation de %ROWTYPE
- Boucles FOR .. IN CURSOR
- Curseurs paramétrés pour requêtes dynamiques
CH3: Les procédures et fonctions
Sous-programmes :
- Procédures : exécutent des actions, ne retournent pas de valeur.
- Fonctions : retournent une valeur.
Types :
- Stockés (autonomes) : créés avec CREATE OR REPLACE, stockés dans la base.
- Non stockés : définis dans des blocs anonymes.
Syntaxes :
-- Procédure
CREATE OR REPLACE PROCEDURE nom (...) IS
BEGIN
...
END;
-- Fonction
CREATE OR REPLACE FUNCTION nom (...) RETURN type IS
BEGIN
RETURN valeur;
END;
Avantages :
- Réutilisabilité, portabilité, maintenabilité, performance
CH4: Les triggers (déclencheurs)
Un trigger est un bloc PL/SQL stocké qui s·exécute automatiquement lors d·un événement (INSE
Syntaxe :
CREATE [OR REPLACE] TRIGGER nom trigger
{BEFORE|AFTER|INSTEAD OF}
{INSERT|UPDATE [ OF nom colonne [, nom colonneN]] |DELETE}
OR {INSERT|UPDATE [OF nom colonne [, nom colonneN ]] |DELETE}
REFERENCING {[OLD [AS] ancien] | [NEW [AS] nouveau] }
ON nom table
[FOR EACH ROW]
[WHEN] (condition)
DECLARE
/* déclaration */
BEGIN
/* traitement */
[EXCEPTION]
END;
Types :
- Trigger de table (STATEMENT) : s·exécute une seule fois par opération.
- Trigger de ligne (ROW) : s·exécute pour chaque ligne affectée.
Accès aux valeurs :
- :OLD · ancienne valeur
- :NEW · nouvelle valeur
Gestion :
- ALTER TRIGGER ... ENABLE/DISABLE
- DROP TRIGGER nom
CH5: Les exceptions
Une exception est une erreur détectée à l·exécution ou à la compilation.
Types :
- Prédéfinies : ex. NO_DATA_FOUND, TOO_MANY_ROWS, ZERO_DIVIDE
- Définies par l·utilisateur : déclarées avec EXCEPTION
Gestion :
BEGIN
...
EXCEPTION
WHEN exception_name THEN
...
WHEN OTHERS THEN
...
END;
Déclenchement manuel :
- RAISE exception_name
- RAISE_APPLICATION_ERROR(-20000 à -20999, 'message')
Outils utiles :
- SQLCODE : code d·erreur
- SQLERRM : message d·erreur