Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions PL-SQL T6»

De wikiserver
Dreceres ràpides: navegació, cerca
(T6- Creació d'estructures de control)
(T6- Creació d'estructures de control)
Línia 91: Línia 91:
  
 
g) comprova el funcionament d'aquest bloc per cadadascun dels casos anteriors.
 
g) comprova el funcionament d'aquest bloc per cadadascun dels casos anteriors.
 +
 +
::ACCEPT p_empno PROMPT 'Introdueix el codi del empleat: '
 +
 +
::DECLARE
 +
 +
:::v_empno emp.empno%TYPE := &p_empno;
 +
 +
:::v_empsal emp.sal%TYPE;
 +
 +
:::v_comm emp.comm%TYPE;
 +
 +
::BEGIN
 +
 +
:::SELECT sal INTO v_sal
 +
 +
:::FROM emp
 +
 +
:::WHERE empno = v_empno;
 +
 +
:::IF v_sal < 1000 THEN
 +
 +
::::v_comm := .10;
 +
 +
:::ELSIF v_sal BETWEEN 1000 and 1500 THEN
 +
 +
::::v_comm := .15;
 +
 +
:::ELSIF v_sal > 1500 THEN
 +
 +
::::v_comm := .20;
 +
 +
:::ELSE
 +
 +
::::v_comm := 0;
 +
 +
:::END IF;
 +
 +
:::UPDATE emp
 +
 +
:::SET comm = sal * v_comm
 +
 +
:::WHERE empno = v_empno;
 +
 +
:::COMMIT;
 +
 +
::END;
 +
 +
::/
  
 
*'''Exercici 3'''
 
*'''Exercici 3'''

Revisió del 11:44, 24 abr 2014

T6- Creació d'estructures de control

SET VERIFY OFF
ACCEPT p_dept_name PROMPT 'Introdueix el nom del departament: '
DECLARE
v_deptno dept.depno%TYPE;
BEGIN
v_deptno := :g_max_deptno + 10;
INSERT INTO dept(deptno, dname, loc)
VALUES (v_deptno, '&p_dept_name, NULL);
COMMIT;
END;
/


SELECT *
FROM dept
WHERE deptno = :g_max_depnto +10;
  • Exercici 1

Crear una nova taula anomenada MESSAGES per emmagatzemar en una columna anomenada RESULTS cadenes de caràcters de longitud màxima 60 caràcters.

CREATE TABLE messages(results VARCHAR2 (60));

a) crea un bloc per insertar els números del 1 al 10 excepte el 6 i el 8.

b) fes un COMMIT al final del bloc.

c) comprova que la taula messages s'actualitzat correctament.

BEGIN
FOR i IN 1..10 LOOP
IF i = 6 or i = 8 THEN
null;
ELSE
INSERT INTO messages(results)
VALUES (i);
END IF;
COMMIT;
END LOOP;
END;
/


SELECT *
FROM messages;


  • Exercici 2

Crear un nou bloc plsql per a calcular l'import de la comissió d'un empleat, aquesta comissió dependrà del sou de l'empleat.

a) Inserta un nou empleat en la taula EMP que tingui un sou NULL.

b) Crea una variable per tal d'emmagatzemar el número de l'empleat introduït per teclat.

c) si el sou d'aquest empleat és inferior a 1000$ l'import de la comissió serà un 10% d'aquest sou.

d) si el sou d'aquest empleat està entre 1000$ i 1500$ l'import de la comissió serà un 15% d'aquest sou.

e) si el sou d'aquest empleat és superior a 1500$ l'import de la comissió serà un 20% d'aquest sou.

f) si el sou d'aquest empleat és NULL la comissió serà un 0.

g) comprova el funcionament d'aquest bloc per cadadascun dels casos anteriors.

ACCEPT p_empno PROMPT 'Introdueix el codi del empleat: '
DECLARE
v_empno emp.empno%TYPE := &p_empno;
v_empsal emp.sal%TYPE;
v_comm emp.comm%TYPE;
BEGIN
SELECT sal INTO v_sal
FROM emp
WHERE empno = v_empno;
IF v_sal < 1000 THEN
v_comm := .10;
ELSIF v_sal BETWEEN 1000 and 1500 THEN
v_comm := .15;
ELSIF v_sal > 1500 THEN
v_comm := .20;
ELSE
v_comm := 0;
END IF;
UPDATE emp
SET comm = sal * v_comm
WHERE empno = v_empno;
COMMIT;
END;
/
  • Exercici 3

Modifica l'exercici 1 per afegir al costat del número parell o imparell en funció de si aquest és parell o imparell.

  • Exercici 4

Afegiu una nova columna a la taula EMP per afegirs asteriscs “*”

  • Exercici 5

Crea un bloc PL/SQL que introdueixi en la columna creada anteriorment un asterisc per cada 100$ d'un empleat seleccionat per teclat al introduir el seu número d'empleat. Arrodoniu el sou fins el número enter més proper.