PLSQL exercices

image_pdfimage_print

Exo PLSQL 0 – algorithme simple

Créer un bloc qui affiche le resultat de la somme des entiers de 1 a 10.
Puis créer une Procedure stockée qui fasse la même chose avec  10 qui devient un  parametre n d’entrée de la procedure. Idem avec une fonction.

Exo PLSQL 0 bis

Créer une fonction qui calcule PI avec une boucle sachant que la limite de la suite somme des 1/n2 (n entier) est Pi2/6.

Exo PLSQL 1
SELECT INTO

Créer un BLOC PLSQL qui A l’aide d’un SELECT INTO (sans curseur donc) affiche le Salaire moyen du DEPT 10.
Transformer ce bloc  en procédure stockée, puis rajouter le no de département comme paramètre d’entrée de la procédure.  Mettre en place une EXCEPTION spécifique lorsque le no de departement n’est pas présent dans la table EMP (on fera un SELECT COUNT(*) INTO au depart  pour verifier si le nb de DEPT est de 0. Dans ce cas une exception personnalise est levée

Exo PLSQL 2
Remplissage et francisation d’une table EMP_FR à partir de EMP

L’entreprise employant les personnes de la table EMP est délocalisée des USA en France . Il est donc nécessaire de convertir leur salaire en euros (pour simplifier, on admettra 1 USD =0.9 euro). Tous les employés voient également augmenter leur salaire de 10 % après conversion.

1) Créer une nouvelle table vide EMP_F de même structure que EMP mais sans les données (lignes).

2) Écrire un programme PL/SQL permettant de recopier tous les tuples de la table EMP dans la table EMP_F en effectuant au passage les opérations nécessaires sur le salaire et la commission. Traiter le cas où la table EMP est vide comme une exception.
On utilisera un CURSEUR pour le SELECT et une boucle FOR CURSOR.

Exo PLSQL 3
Simuler un AUTOINCREMENT sur une table Oracle grace à une séquence et un trigger

—  vérifier avec SQL Developer si EMPNO est une PRIMARY KEY sur la table EMP
— et l’ajouter le cas échéant
— créer une sequence pour stocker l’increment (démarrant à 1 et s’incrémentant de 1)
— créer un TRIGGER BEFORE INSERT pour automatiser l’incrément

— rem: à partir de la 12C la clause ‘GENERATED…AS IDENTITY’ permet de créer un pseudo AUTO INCREMENT

Exo PLSQL 4
Utilisation de packages prédéfinis (supplied packages)

1) Création d’un fichier CLIENTS.CSV (fichier TXT avec des champs de longueur variable et séparateur ‘;’) contenant quelques lignes avec les champs suivants:

ID, NOM, VILLE, DATE_COMMANDE, CA (chiffre d’affaire)

2) Dans SCOTT, créer la table CLIENTS correspondante

3) En tant que SYS créer une DIRECTORY qui pointe sur le répertoire contenant le CSV. Donner les droits nécessaires et suffisant à SCOTT sur cette DIRECTORY

4) écrire une procédure stockée qui remplit la table en lisant le fichier CSV.
On utilisera le package prédéfini UTL_FILE. Et on veillera à gérer les éventuelles erreurs à minima et a choisir judicieusement les types et les longueurs des Colonnes et des variables.