Sunteți pe pagina 1din 3

--1-CREATE OR REPLACE PROCEDURE SP_TALLER03_PREG01

( DEPART VARCHAR2 )
IS
NRODEPT INT;
NROEMPLE NUMBER;
NOMDEPT NVARCHAR2(50);
BEGIN
SELECT EMPLE.DEPT_NO,
COUNT(EMPLE.EMP_NO),
DEPTS.DNOMBRE
INTO NRODEPT, NROEMPLE, NOMDEPT
FROM DEPTS
INNER JOIN EMPLE
ON DEPTS.DEPT_NO=EMPLE.DEPT_NO AND DEPTS.DNOMBRE = DEPART
GROUP BY EMPLE.DEPT_NO,DEPTS.DNOMBRE;
dbms_output.put_line('Nro Dept:'|| NRODEPT);
dbms_output.put_line('Nro Empleados:'|| NROEMPLE);
dbms_output.put_line('Dept:'|| NOMDEPT);
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('NO SE ENCONTRARON DATOS');
END;
SET SERVEROUTPUT ON;
DECLARE DEPARTM NVARCHAR2(50):='VENTAS';
BEGIN
SP_TALLER03_PREG01(DEPARTM);
END;

--2-CREATE OR REPLACE PROCEDURE SP_TALLER03_PREG02


(
NROEMPLEADO PLANTILLAS.EMPLEADO_NO%TYPE,
APELLIDOEMPLE PLANTILLAS.APELLIDO%TYPE
)
IS
NEMPLE PLANTILLAS.EMPLEADO_NO%TYPE;
EAPELLIDO PLANTILLAS.APELLIDO%TYPE;
BEGIN
SELECT EMPLEADO_NO,APELLIDO
INTO NEMPLE, EAPELLIDO
FROM PLANTILLAS P
WHERE P.EMPLEADO_NO = NROEMPLEADO
AND P.APELLIDO = APELLIDOEMPLE;
---------------------------------------------------DELETE FROM PLANTILLAS P
WHERE P.EMPLEADO_NO = NEMPLE
AND P.APELLIDO = EAPELLIDO;
dbms_output.put_line('Registro eliminado satisfactoriamente');
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('No se encontr el Empleado ' || APELLIDOEMPLE || ' co
n el numero ' || NROEMPLEADO);

WHEN OTHERS THEN


dbms_output.put_line('Error al intentar borrar el registro');
END;
SET SERVEROUTPUT ON;
DECLARE
NEMP INT:=6357;
EAPE PLANTILLAs.APELLIDO%TYPE :='KARPLUS W.';
BEGIN
SP_TALLER03_PREG02 (NEMP, EAPE);
END;
--3-CREATE OR REPLACE PROCEDURE SP_TALLER03_PREG03
(
VALOR_APE MPLE.APELLIDO%TYPE,
VALOR_APELLIDO IN OUT SYS_REFCURSOR
)
IS
V_APE EMPLE.APELLIDO%TYPE;
BEGIN
V_APE:= '%' || UPPER(VALOR_APE) || '%';
OPEN VALOR_APELLIDO FOR
SELECT EMPLE.SALARIO,
EMPLE.OFICIO,
EMPLE.APELLIDO,
DEPTS.DNOMBRE
FROM EMPLE
INNER JOIN DEPTS
ON EMPLE.DEPT_NO = DEPTS.DEPT_NO
WHERE UPPER(EMPLE.APELLIDO) LIKE V_APE;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE(sqlerrm);
END;
VARIABLE V REFCURSOR
EXECUTE SP_TALLER03_PREG03 ('ARC',:V)
PRINT V
--4--CREATE OR REPLACE PROCEDURE SP_TALLER03_PREG04
(
C_SALA IN OUT SYS_REFCURSOR
)
IS
BEGIN
OPEN C_SALA FOR
SELECT 'En el hospital ' || H.NOMBRE || ' hay ' || COUNT(S.SALA_COD) ||
' salas.' HOSPITALES
FROM HOSPITALES H
INNER JOIN SALAS S
ON H.HOSPITAL_COD = S.HOSPITAL_COD

GROUP BY H.NOMBRE;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE(sqlerrm);
END;
VARIABLE C REFCURSOR
EXECUTE SP_TALLER03_PREG04 (:C);
PRINT C
--5-CREATE OR REPLACE PROCEDURE SP_TALLER03_PREG05
IS
BEGIN
SELECT PLANTILLAS.APELLIDO AS NOMEMPLEADO,
HOSPITALES.NOMBRE AS NOMHOSPTAL,
HOSPITALES.NUM_CAMA
FROM PLANTILLAS
INNER JOIN HOSPITALES
ON PLANTILLAS.HOSPITAL_COD = HOSPITALES.HOSPITAL_COD ;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE(sqlerrm);
END;

S-ar putea să vă placă și