M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions PL-SQL T7

De wikiserver
La revisió el 12:30, 24 abr 2014 per Rsort (Discussió | contribucions) (T7- Tipus de dades compostes)
Dreceres ràpides: navegació, cerca

T7- Tipus de dades compostes

  • Exercici 1

Escriu un bloc PL/SQL per recuperar el nom i el sou d'un empleat concret de la taula EMP a partir de la introducció del seu número d'empleat.

a. Crea una nova taula per emmagatzemar salaris i sous.

SQL> CREATE TABLE top_dogs
  2  (name    VARCHAR2(25),
  3   salary  NUMBER(11,2));

b. Declara dues taules: rev_salary_table_type per emmagatzemar el percentatge de augment de salari. i emp_table_type per guardar l'empleat tractat.

c. Inicialitza les posicions de la taula rev_salary_table, corresponents als números de departament de la taula dept, amb els diferents percentatges:

      10 -->  2; 20 --> 3; 30 --> 4; 40 --> 3 ...

d. Guarda el nom i salari en la taula emp_table en la posició corresponent al departament de l'empleat.

e. Finalment guarda en la taula top_dogs el nom de l'empleat i el seu salari revisat en funció del departament al que pertany.


SET VERIFY OFF
ACCEPT p_empno PROMPT 'Número de empleado:'
DECLARE
TYPE emp_record IS RECORD
(
ename emp.ename%TYPE ,
sal emp.sal%TYPE
);
TYPE emp_table_type IS TABLE OF emp_record
INDEX BY BINARY_INTEGER;
TYPE rev_salary_table_type IS TABLE OF NUMBER(7,2)
INDEX BY BINARY_INTEGER;
emp_table emp_table_type;
rev_salary_table rev_salary_talbe_type;
v_empno emp.empno%TYPE := &p_empno;
v_emp emp_record;


BEGIN

 DELETE
 FROM top_dogs;
 SELECT ename, sal
 INTO v_ename, v_sal
 FROM emp
 WHERE empno = v_empno;
 ename_table(i) := v_ename;
 sal_table(i) := v_sal;
 INSERT INTO top_dogs (name,salary)
 VALUES (ename_table(i), sal_table(i));
 COMMIT;

END;