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)
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 emp_table_type IS TABLE OF emp_record
- TYPE rev_salary_table_type IS TABLE OF NUMBER(7,2)
- INDEX BY BINARY_INTEGER;
- TYPE rev_salary_table_type IS TABLE OF NUMBER(7,2)
- 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;