• Aucun résultat trouvé

S.G.B.D. 2 TD n° 4 Les procédures stockées PL/SQL

N/A
N/A
Protected

Academic year: 2022

Partager "S.G.B.D. 2 TD n° 4 Les procédures stockées PL/SQL"

Copied!
2
0
0

Texte intégral

(1)

I.U.T. de Nice Côte d’Azur 2007-2008 Département Informatique

DUT2A – SGBD2

S.G.B.D. 2

TD n° 4

Les procédures stockées PL/SQL

Objectif : créer des procédures ou des fonctions stockées sur le serveur

Note : les exercices portent sur le schéma VIDEO (voir TD3)

1. Créer des procédures stockées

PL/SQL

1.1. A l’aide de votre éditeur favori, créer la procédure PL/SQL en dessous (la nommer donner_max.sql).

CREATE OR REPLACE PROCEDURE donner_max_emp

( le_idcli IN client.id_client%TYPE, le_max_emp IN NUMBER DEFAULT 5 ) AS

-- affecte le nb max d’emprunt d’un client specifie en parametre BEGIN

UPDATE client C

SET C.nb_max_empt = le_max_emp WHERE C.id_client = le_idcli ; END ;

/

Chargement d’une procédure PL/SQL

1.2. A l’aide de SQL*Plus, charger la procédure donner_max.sq dans votre schéma de BD.

Exécution d’une procédure à partir de SQL*Plus

1.3. Exécuter la procédure donner_max, puis vérifier son bon fonctionnement.

Les vues USER_SOURCE et USER_ERRORS 1.4. Consulter la vue USER_SOURCE.

1.5. Introduire une erreur dans la procédure donner_max_emp, la charger sous SQL*Plus, puis visualiser les erreurs de compilation en tapant la commande SHOW ERRORS, ou en consultant la vue USER_ERRORS.

Les erreurs d’application

1.6. Modifier la procédure donner_max_emp afin de lever une erreur d’application lorsque l’identifiant du client passé en paramètre est invalide.

(2)

2

1.7. Charger la nouvelle version de donner_max_emp dans le schéma courant, puis faire un test avec un identifiant de client inexistant.

Insérer une ligne dans une table

1.8. Créer une procédure ins_client pour insérer un nouveau client dans la table CLIENT. On passera en paramètre l’identifiant du client et son nom. La date de fin d’abonnement sera initialisée avec la date du jour + 30, le nombre maximum d ‘emprunt à 1.

1.9. Exécuter la procédure avec les valeurs ‘KK’, ‘Durand’ pour l’identifiant et le nom.

1.10. Afficher le nouveau client créé.

1.11. Exécuter à nouveau la procédure avec le même identifiant ‘KK’, que se passe-t-il ? 1.12. Lever une erreur d’application lorsque le client est déjà présent dans la table.

Supprimer une ligne dans une table

1.13. Créer une procédure sup_client pour supprimer un client dans la table CLIENT. L’identifiant du client sera passé en paramètre, une erreur sera levée s’il n’existe pas.

1.14. Que se passe-t-il si le client spécifié en paramètre a des emprunts en cours ?

Le privilège EXECUTE

1.15. Donner à votre binôme le privilège d’exécuter la procédure donner_max_emp. 1.16. Vérifier que votre binôme peut exécuter cette procédure.

1.17. Quel est le schéma modifié par l’exécution de la procédure, le votre ou celui de votre binôme ?

2. Créer des fonctions stockées

2.1. Saisir la fonction PL/SQL en dessous (nommez la max_emp.sql).

2.2. Charger la fonction max_emp dans votre schéma.

2.3. Appeler la fonction max_emp à partir de SQL*Plus.

2.4. Créer une fonction nb_emp qui renvoie le nombre d’emprunt d’un client spécifié en paramètre (ou renvoie –1 si le client n’existe pas).

2.5. Sous SQL*Plus, lister les noms des clients avec leurs nombres d’emprunts en faisant appel à la fonction nb_emp.

Références

Documents relatifs

 Le dépistage et le traitement ne sont pas recommandés avant arthroplastie réglée, chirurgie cardio vasculaire, chez les autres patients immunodéprimés, avant ablation

Les procédures stockées du système peuvent s'exécuter depuis n'importe quelle base de données, sans avoir à qualifier complètement le nom de la procédure stockée, en utilisant

Commandes de dialogue (suite) Exemple de requête paramétrée : SQL> SELECT *.

Elle peut être utilisée comme expression dans une requête SQL ou dans tout autre bloc de PL/SQL (procédure ou autre fonction), tout comme les autres fonctions

Avec %type, on utilise le type d’un attribut d’une table comme type de variable..

Appel d’une procédure dans SQL*PLUS : call ou execute ou exec 17 Appel d’une procédure dans une procédure ou une fonction 18 Variable locale : IS ou AS : Zone des variables

Opening the cursor allocates memory for the cursor and makes it ready for fetching the rows returned by the SQL statement into it. For example, we will open above-defined cursor

Pour chaque OTC avec une date de demande de juin 2010, afficher les informations : NUM_OTC (Numéro OTC), NUMVELIB (Numéro de Vélib), NOM_MODELE (Nom du Modèle) et NOM_AGENT (Nom