5
Classe : 3A TP 1 : Introduction à PL/SQL Exercice1 Parmi les déclarations et les blocs PL/SQL suivants, lesquels s'exécutent avec succès ? a. BEGIN END; false b. DECLARE amount INTEGER(10); END; false c. DECLARE BEGIN END; false d. DECLARE amount INTEGER(10); BEGIN DBMS_OUTPUT.PUT_LINE(amount); END; True Exercice2 Créez et exécutez un bloc anonyme simple qui affiche "Hello World". Exécutez et enregistrez ce script sous le nom lab1.sql. DECLARE var varchar(40):='Helo world'; BEGIN DBMS_OUTPUT.PUT_LINE(var); END; Exercice3 Ecrivez un programme pl/sql placant la valeur 10 dans une variable a, puis affichant la factorielle de a. Exécutez et enregistrez ce script sous le nom lab2.sql.

PL_TP1.docx

Embed Size (px)

DESCRIPTION

tp

Citation preview

Page 1: PL_TP1.docx

Classe : 3A

TP 1 : Introduction à PL/SQL

Exercice1

Parmi les déclarations et les blocs PL/SQL suivants, lesquels s'exécutent avec succès ?a. BEGINEND; falseb. DECLAREamount INTEGER(10);END; falsec. DECLAREBEGINEND; falsed. DECLAREamount INTEGER(10);BEGINDBMS_OUTPUT.PUT_LINE(amount);END; True

Exercice2

Créez et exécutez un bloc anonyme simple qui affiche "Hello World". Exécutez et enregistrez ce script sous le nom lab1.sql.DECLAREvar varchar(40):='Helo world';BEGINDBMS_OUTPUT.PUT_LINE(var);END;

Exercice3

Ecrivez un programme pl/sql placant la valeur 10 dans une variable a, puis affichant la factorielle de a. Exécutez et enregistrez ce script sous le nom lab2.sql.

DECLAREa number :=10;f number :=1;BEGINfor i IN 1..10 LOOPf:=f*i;END LOOP;DBMS_OUTPUT.PUT_LINE(f );

Page 2: PL_TP1.docx

END;

Exercice4

  Parmi les déclarations de variables suivantes, déterminer celles qui sont incorrectes :   A -    DECLARE           v_id     NUMBER(4);  trueB-  DECLARE          v_x,v_y,v_z    VARCHAR2(10);  falseC -   DECLARE          v_date_naissance DATE NOT NULL; falseD -    DECLARE           v_en_stock    BOOLEAN := 1; false

E -    DECLARE          emp_record    emp_record_type; false

Exercice5

1. Créer un bloc PL/SQL pour insérer un nouveau département « juridique»dans la table DEPARTMENTS ". Exécutez et enregistrez ce script sous le nom lab3.sql.

 a) Utiliser  la séquence DEPT_ID_SEQ pour générer un numéro de département on suppose que la séquence existe déjà dans notre base de données).(. Laisser le numéro de région(location_id) à NULL.

DECLARE

BEGIN

insert into departments (department_id,department_name,manager_id,location_id)values(seq.nextval(),147,'juridique');

end;

Créer la table commande contenant le num_cmd , num_client,employee_id,date_cmd

et total ajouter les contraintes nécessaires.la clé primaire est composée du num_cmd

et du num_client

Create table commande (

Num_cmd number,

Page 3: PL_TP1.docx

Num_client number,

Employee_id number,

Date_cmd date,

Constraint pk_cmd primary key(num_cmd , num_client)

);

Créer un bloc PL/SQL permettant de mettre à jour le pourcentage de commission de

l’employé num 100 en fonction du total de ses ventes. Exécutez et enregistrez ce script

sous le nom lab3.sql:

 Trouver la somme totale de toutes les commandes traitées par cet employé  Mettre à jour le pourcentage de commission de l’employé : - si la somme est inférieure à 100,000 passer la commission à 10 - si la somme est comprise entre 100,000 et 1,000,000 inclus passer la commission à 15 - si la somme excède 1,000,000 passer la commission à 20 - si aucune commande n’existe pour cet employé, mettre la commission à 0     

Exercice6

Ecrire un bloc PL/SQL qui permet d’afficher le nom et le revenu mensuel d’un employé donné (revenu mensuel=salaire(1+commission)). Utiliser le type record vu en cours.

    Exercice7

Testez la visibilité des variables suivantes, donnez le résultat à chaque niveau (ligne 9-16-18) :

Page 4: PL_TP1.docx

Exercice8

Créer la table Etudiant (Noetud number, NomEtud Varchar(20), Note number).

Ecrire un bloc PL/SQL permettant de remplir la table Etudiant de 30 enregistrements.

Noetud NomEtud Note1 Etudiant 1 102 Etudiant 2 10…30 Etudiant 30 10