Exercices (Variables)
Exo #1 (a):
Pour la table Dept, créer des variables qui auront le même type et la même dimension que les colonnes de
Dept.
Leur affecter respectivement les valeurs : 60, ‘RHU’, ‘MONTRÉAL’ NB. :
On utilise sous SQL*Plus la commande : SET SERVEROUTPUT ON pour pouvoir afficher les résultats de la
commande Oracle (Package) :
DBMS_OUTPUT.PUT_LINE(chaîne)
Réponse (a)
DECLARE
v_deptno number(2) := 60;
v_dname varchar2(14) := ‘RHU’;
v_loc varchar2(13) := ‘MONTRÉAL’;
BEGIN
DBMS_OUTPUT.PUT_LINE(‘No dept : ‘||v_deptno);
DBMS_OUTPUT.PUT_LINE(‘Nom dept : ‘||v_dname);
DBMS_OUTPUT.PUT_LINE(‘Loc : ‘||v_loc);
END;
N.B. : Pour affecter les colonnes d’une ligne d’une table :
SELECT colonne INTO v_col FROM nom de table WHERE condition(s);
Exo #2 :
Déclarer les variables v_deptno, v_dname, v_loc correspondantes aux colonnes de Dept.
Affecter à ces variables le no, le nom et la localisation du département no 20.
Afficher les valeurs de ces variables.
Réponse :
DECLARE v_deptno number(2);
v_dname varchar2(14);
v_loc varchar2(13);
BEGIN
SELECT deptno, dname, loc INTO v_deptno, v_dname, v_loc FROM DEPT WHERE deptno=20;
DBMS_OUTPUT.PUT_LINE(‘No dept : ‘||v_deptno);
DBMS_OUTPUT.PUT_LINE(‘Nom dept : ‘||v_dname);
DBMS_OUTPUT.PUT_LINE(‘Loc : ‘||v_loc);
END;
Exo #3 :
Insérer les valeurs 60, ‘RHU’, ‘MONTRÉAL’ dans la table DEPT.
Réponse :
DECLARE
v_deptno number(2) := 60;
v_dname varchar2(14) := ‘RHU’;
v_loc varchar2(13) := ‘MONTRÉAL’;
BEGIN
INSERT INTO DEPT(‘deptno, dname, loc) VALUES (v_deptno, v_dname, v_loc);
END;
Exo #4 :
Utilisation de variables SQL*Plus.
– Créer des variables sous SQL*Plus dans lequel on affecte les valeurs 70, ‘Finance’, ‘Québec’
- Affecter ces variables à d,autres variables qu’on va créer dans un bloc PL/SQL.
- Afficher ces variables.
Réponse :
Sous SQL*Plus, on crée les variables suivantes :
ACCEPT p_dept 70
ACCEPT p_dname Finance
ACCEPT p_loc Québec
DECLARE
v_deptno number(2) := &p_deptno;
v_dname varchar2(14) :=&p_dname;
v_loc varchar2(13) := &p_loc;
BEGIN DBMS_OUTPUT.PUT_LINE(‘No dept : ‘|| v_deptno);
DBMS_OUTPUT.PUT_LINE(‘Nom dept : ‘|| v_dname);
DBMS_OUTPUT.PUT_LINE(‘Loc dept : ‘|| v_loc);
END;
c) Variables faisant référence au dictionnaire de données.
c1. Variables de même type qu’une colonne d’une table de BD :
Syntaxe : Nom_var [Link]%type;
Exemple : v_dname [Link]%type;
Exo #1 :
Refaire l’ex #1 de la partie précédente avec ‘%type’
Réponse :
DECLARE v_deptno [Link]%type := 60;
v_dname [Link]%type := ‘RHU’;
v_loc [Link]%type := ‘MONTRÉAL’;
BEGIN
DBMS_OUTPUT.PUT_LINE(‘No dept : ‘||v_deptno);
DBMS_OUTPUT.PUT_LINE(‘Nom dept : ‘||v_dname);
DBMS_OUTPUT.PUT_LINE(‘Loc : ‘||v_loc);
END;
Exo #2 :
- Affecter les valeurs des colonnes de la table DEPT dont le no Dept=30 aux variables v_deptno,
v_dname, v_loc.
- Afficher les valeurs de ces variables.
Réponse :
DECLARE
v_deptno [Link]%type;
v_dname [Link]%type;
v_loc [Link]%type;
BEGIN
SELECT * INTO v_deptno, v_dname, v_loc FROM DEPT WHERE deptno=30;
DBMS_OUTPUT.PUT_LINE(‘No dept : ‘||v_deptno);
DBMS_OUTPUT.PUT_LINE(‘Nom dept : ‘||v_dname);
DBMS_OUTPUT.PUT_LINE(‘Loc : ‘||v_loc);
END;
c2. Variables de même structure qu’une ligne d’une table de BD :
Syntaxe : v_ligne Table%ROWTYPE
exemple : v_employe EMP%ROWTYPE
N.B. : - La structure ligne contient autant de variables que de colonnes de la table.
- Ces variables portent le même nom et sont de même type que les colonnes de la table.
- Pour y accéder : v_ligne.nom_colonne
Exemple : v_ligne.ename, v_ligne_sal
Exo : Affecter la ligne de la table DEPT dont deptno=30 à la variable v_dept.
Afficher le contenu de la variable.
Réponse :
DECLARE
v_dept Dept%rowtype;
BEGIN SELECT * INTO v_dept FROM DEPT WHERE deptno=30;
DBMS_OUTPUT.PUT_LINE(‘No dept : ‘||v_dept.deptno);
DBMS_OUTPUT.PUT_LINE(‘Nom dept : ‘||v_dept.dname);
DBMS_OUTPUT.PUT_LINE(‘Loc : ‘||v_dept.loc);
END;