1- Écrire un bloc PL/SQL qui permet de saisir le code d’un
employé et d’afficher son salaire annuel. Utiliser une variable globale et une variable de substitution.
ACCEPT p_code PROMPT ‘Donner le code de l’employé’;
VARIABLE g_salann NUMBER; BEGIN SELECT sal * 12 INTO :g_salann FROM emp WHERE empno=&p_code; END; / PRINT g_salann; 2- Écrire un bloc PL/SQL qui permet de saisir le nom d’un employé, d’affecter toute la ligne de l’employé dont le nom a été saisi dans un enregistrement, et d’afficher son salaire annuel. Utiliser une variable globale et une variable de substitution.
ACCEPT p_nom PROMPT ‘Donner le nom de l’employé’;
VARIABLE g_salann NUMBER; DECLARE Emp_rec emp%ROWTYPE; BEGIN SELECT * INTO Emp_rec FROM emp WHERE ename = &p_nom; :g_salann := Emp_rec,sal * 12; END; / PRINT g_salann; 3- Créez et exécutez un bloc PL/SQL qui prenne en compte deux nombres grâce à des variables de substitution SQL*Plus. Il faut diviser le premier nombre par le second, et ajouter le résultat au second nombre. Le résultat doit être stocké dans une variable PL/SQL et affiché à l’écran. Méthode 1 SET VERIFY OFF VARIABLE g_result NUMBER ACCEPT p_num1 PROMPT ‘Veuillez saisir le premier nombre: ’; ACCEPT p_num2 PROMPT ‘Veuillez saisir le deuxième nombre: ’; DECLARE v_num1 NUMBER(9,2) := &p_num1; v_num2 NUMBER(9,2) := &p_num2; BEGIN :g_result := (v_num1/ v_num2) + v_num2; END; / PRINT g_result SET VERIFY OFF SET VERIFY ON SET VERIFY ON Méthode 2 SET SERVEROUTPUT ON ACCEPT p_num1 PROMPT ‘Veuillez saisir le premier nombre: ’; ACCEPT p_num2 PROMPT ‘Veuillez saisir le deuxième nombre: ’; DECLARE v_num1 NUMBER(9,2) := &p_num1; v_num2 NUMBER(9,2) := &p_num2; BEGIN dbms_output.put_line((v_num1/ v_num2)+ v_num2); END; / 4- Créez un bloc PL/SQL qui sélectionne le plus grand numéro de département (DEPTNO) de la table DEPT et le stocke dans une variable SQL*Plus. Affichez le résultat à l’écran. Méthode 1 (utilisation d’une variable globale) VARIABLE g_max_deptno NUMBER DECLARE v__max_deptno NUMBER; BEGIN SELECT MAX(deptno) INTO v_max_deptno FROM dept; : g_max_deptno:= v_max_deptno; END; / PRINT g_max_deptno Méthode 2 (utilisation d’une variable locale) SET SERVEROUTPUT ON DECLARE v__max_deptno NUMBER; BEGIN SELECT MAX(deptno) INTO v_max_deptno FROM dept; Dbms_output.put_line(v_max_deptno); END; /