ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Soluciones bloques codigo


Enviado por   •  10 de Octubre de 2019  •  Apuntes  •  515 Palabras (3 Páginas)  •  91 Visitas

Página 1 de 3

1.- Codificar el programa PL/SQL que permita aumentar en un 10% el salario de un empleado cuyo número se introduce por teclado.

DECLARE

cursor cur1(argu1 number) IS

SELECT * FROM temple WHERE numem=argu1 FOR UPDATE OF salar;

registro cur1%ROWTYPE;

BEGIN

OPEN cur1(&Numero_empleado);

FETCH cur1 INTO registro;

UPDATE temple SET salar=salar*1.1 WHERE CURRENT OF cur1;

-- COMMIT;

CLOSE cur1;

END;

/

2.-Modificar el anterior programa para controlar la inexistencia del empleado tecleado, no haciendo nada, solo evitando que el programa finalice con error.

DECLARE

cursor cur1(argu1 number) is

SELECT * FROM temple WHERE numem=argu1 FOR UPDATE OF salar;

registro cur1%ROWTYPE;

NOEXISTE EXCEPTION;

BEGIN

OPEN cur1(&Numero_empleado);

FETCH cur1 INTO REGISTRO;

IF cur1%NOTFOUND

THEN RAISE NOEXISTE;

END IF;

UPDATE temple SET salar=salar*1.1 WHERE CURRENT OF cur1;

-- COMMIT;

CLOSE cur1;

EXCEPTION

WHEN NOEXISTE THEN

null;

END;

/

3.- Modificar el anterior programa de forma que si el empleado no existe se visualice un mensaje de error.

SET SERVEROUTPUT ON SIZE 5000

SET ECHO OFF

DECLARE

cursor cur1(argu1 number) IS

SELECT * FROM temple WHERE numem=argu1 FOR UPDATE OF salar;

registro cur1%ROWTYPE;

NOEXISTE EXCEPTION;

BEGIN

OPEN cur1(&Numero_empleado);

FETCH cur1 INTO registro;

IF cur1%notfound THEN

RAISE NOEXISTE;

END IF;

UPDATE temple SET salar=salar*1.1 WHERE CURRENT OF cur1;

CLOSE cur1;

EXCEPTION

WHEN NOEXISTE THEN

DBMS_OUTPUT.put_line('Empleado inexistente');

END;

/

4.- Codificar el programa PL/SQL que solicite por pantalla un número de departamento y calcule la suma total de los salarios y comisiones de ese departamento. Después inserte la tupla correspondiente en la tabla TOTALES, previamente creada con la siguiente estructura:

deptno number(3)

total number(10,2)

Realizar el ejercicio utilizando un bucle simple y tratando el cursor.

--CREATE TABLE TOTALES(deptno number(3), total number(10,2));

DECLARE

cursor cur1(argu1 number) is

SELECT numde, salar, comis FROM temple WHERE numde=argu1;

registro cur1%ROWTYPE;

acu number(10,2):=0;

BEGIN

OPEN cur1(&Numero_departamento);

LOOP

FETCH cur1 INTO registro;

EXIT WHEN cur1%NOTFOUND;

acu:=acu+registro.salar+nvl(registro.comis,0);

END LOOP;

INSERT INTO TOTALES VALUES(registro.numde, acu);

CLOSE cur1;

END;

/

SELECT * FROM TOTALES; -- Para comprobar como ha quedado la tabla totales

...

Descargar como (para miembros actualizados) txt (5 Kb) pdf (41 Kb) docx (11 Kb)
Leer 2 páginas más »
Disponible sólo en Clubensayos.com