UNSCH muuy baja resolución.

jpg UNIVERSIDAD NACIONAL SAN CRISTOBAL DE HUAMANGA FACULTAD DE INGENIERIA DE MINAS, GEOLOGIA Y CIVIL ESCUELA DE FORMACION PROFESIONAL DE INGENIERIA DE SISTEMAS

ADMINISTRACIÓN DE BASE DE DATOS PRÁCTICA 3 PROCEDIMIENTOS ALMACENADOS

DOCENTE : ING. ELVIRA FERNÁNDEZ JERÍ ESTUDIANTE : ALVAREZ RODRIGUEZ, Rosario A. FECHA : jueves, 17 de octubre de 2013

AYACUCHO-PERU 2013

PRODUCT_DESCRIPTION. DESCRIPCION VARCHAR(2000).list_price%type. Ejecutando SET SERVEROUTPUT ON. PRECIO_LISTA product_information.LIST_PRICE INTO NOMBRE. END. DESCRIPCION. que genere la lista de precios de UN PRODUCTO indicado. . PRECIO_LISTA FROM PRODUCT_INFORMATION WHERE PRODUCT_ID=3091.PUT_LINE('PRECIO DE LISTA: '|| PRECIO_LISTA). DBMS_OUTPUT.EJERCICIOS 1. Crear un procedimiento almacenado en el esquema OE. DBMS_OUTPUT. BEGIN SELECT PRODUCT_NAME.PUT_LINE('DESCRIPCIÓN PRODUCTO: ' || DESCRIPCION). EXECUTE MOSTRAR_PRODUCTO(). Mostrar nombre del producto y lista de precio Desbloquear el usuario oe En el sql developer se escribe el siguiente script CREATE OR REPLACE PROCEDURE MOSTRAR_PRODUCTO IS NOMBRE VARCHAR(50). DBMS_OUTPUT.PUT_LINE('NOMBRE PRODUCTO: '|| NOMBRE).

Crear un procedimiento almacenado que permita mostrar el directorio de un empleado. Buscar al empleado por código. su teléfono y el nombre del departamento al que pertenece.2. es decir su nombre. apellidos en una sola fila. CREATE OR REPLACE PROCEDURE MOSTRAR_EMPLEADO(PCODIGO IN NUMBER) IS .

FIRST_NAME ||'.department_id = d.PUT_LINE('DEPARTAMENTO: '||DEPARTAMENTO). DEPARTAMENTO FROM EMPLOYEES E INNER JOIN DEPARTMENTS D ON e.PUT_LINE('NOMBRE Y APELLIDO: ' ||NOMB_APP). Crear un procedimiento que permita agregar CIUDADES a la tabla Ciudades.department_id WHERE e. DEPARTAMENTO DEPARTMENTS. APELLIDO. Puesto que no encontré ninguna tabla CIUDAD lo cambié por la tabla COUNTRIES CREATE OR REPLACE PROCEDURE COUNTRIES_INS ( PCOUNTRY_ID IN CHAR. PHONE_NUMBER. PCOUNTRY_NAME IN VARCHAR. NOMBRE. DBMS_OUTPUT.CODIGO NUMBER.PUT_LINE('CODIGO: '||CODIGO). TELEFONO VARCHAR(20). NOMB_APP VARCHAR(45). DBMS_OUTPUT. 3. DBMS_OUTPUT. SET SERVEROUTPUT ON.DEPARTMENT_NAME%TYPE. BEGIN SELECT EMPLOYEE_ID. PREGION_ID IN NUMBER .employee_id = PCODIGO. DBMS_OUTPUT. EXECUTE MOSTRAR_EMPLEADO(110).PUT_LINE('TELÉFONO: '||TELEFONO). END.department_name INTO CODIGO. d. '|| LAST_NAME. TELEFONO.

PCOUNTRY_NAME.) AS BEGIN INSERT INTO COUNTRIES(COUNTRY_ID.PREGION_ID).COUNTRY_NAME. .REGION_ID) VALUES( PCOUNTRY_ID. END.

pe. Crear un procedimiento almacenado que permita actualizar los emails de los empleados según su codigo. END. se selecciona los empleados (antes) Ahora ejecutamos el código y vemos como queda después . Después invocar tal procedimiento. Antes de ejecutar el procedimiento. CREATE OR REPLACE PROCEDURE UPD_EMPLOYEE_EMAIL ( PID IN NUMBER) AS BEGIN UPDATE EMPLOYEES SET EMAIL= first_name || '@unsch.4.edu.pe' WHERE EMPLOYEE_ID = PID.edu. con el domino corporativo ejemplo: juan@unsch.

Ahora el procedimiento para borrar las ocupaciones de los empleados según ocupación indicada es: CREATE OR REPLACE PROCEDURE UPD_EMPLOYEE_JOB(OCUPACION VARCHAR) AS BEGIN UPDATE EMPLOYEES E SET job_id = 'EMPTY' WHERE job_id = (SELECT JOB_ID FROM JOBS WHERE JOB_TITLE = OCUPACION). Porque no puedo eliminar una ocupación de la tabla JOBS porque tiene llave foránea. Crear un procedimiento almacenado que permita borrar las ocupaciones. veamos algunas ocupaciones Eliminaremos a todos los que pertenezcan a la ocupación de Sales Manager :3 . es decir. puesto que el atributo job_id de la tabla empleado es obligatoria. debo darle u n valor es vez de null .5. según ocupación indicada. Antes de aplicar el procedimiento. END. tengo que insertar una ocupación empty en la tabla Jobs. En primer lugar.

END.6.job_title%type.salary + e. según la ocupación que corresponda.job_id in(SELECT JOB_ID FROM JOBS WHERE JOB_TITLE = pJob_title). porcentaje in number) AS BEGIN UPDATE EMPLOYEES E SET E.salary*porcentaje/100 WHERE e. Antes Ahora ejecutamos el procedimiento almacenado para que ponga un aumento del 15% a los que pertenezcan a la ocupación Shipping Clerk . Crear un procedimiento almacenado que permita aumentar los salarios en un porcentaje indicado. CREATE OR REPLACE PROCEDURE AUMENTAR_SUELDO (pJob_title in jobs.SALARY = e.

DBMS_OUTPUT.department_name%TYPE.job_title.last_name%TYPE.end_date%TYPE.PUT_LINE('FECHA INICIO: '||FECHA_INICIO). OCUPACION jobs.APELLIDO.department_id WHERE e.department_id = d. jh. CREATE OR REPLACE PROCEDURE JOBHISTORY_LST (P_EMPLOYEE_ID IN NUMBER) AS NOMBRE employees.job_title%TYPE. jh.PUT_LINE('NOMBRE: '||NOMBRE).last_name.PUT_LINE('APELLIDO: '|| APELLIDO). Seleccionar nombre. DBMS_OUTPUT. APELLIDO employees.job_id = j. apellido. FECHA_FIN job_history. j.start_date.e. DBMS_OUTPUT. BEGIN SELECT e.employee_id = P_EMPLOYEE_ID. fecha fin.department_name INTO NOMBRE.end_date.job_id INNER JOIN DEPARTMENTS D ON jh.FECHA_INICIO.first_name%TYPE. d.first_name .start_date%TYPE.FECHA_FIN.employee_id INNER JOIN JOBS J ON jh.employee_id = e. fecha inicio.Después Crear 5 procedimiento almacenados 1. . OCUPACION. DEPARTAMENTO departments. ocupación y departamento de un empleado. FECHA_INICIO job_history. DEPARTAMENTO FROM JOB_HISTORY JH INNER JOIN EMPLOYEES E ON jh.

.DBMS_OUTPUT.PUT_LINE('FECHA FIN: '||FECHA_FIN).

EMAIL.PLAST_NAME.DBMS_OUTPUT. PJOB_ID IN VARCHAR ) AS BEGIN INSERT INTO EMPLOYEES ( EMPLOYEE_ID.PJOB_ID ).LAST_NAME.FIRST_NAME. DBMS_OUTPUT. PFIRST_NAME IN VARCHAR.HIRE_DATE. .PUT_LINE('OCUPACION: '||OCUPACION).JOB_ID ) VALUES ( PEMPLOYEE_ID. END. PHIRE_DATE IN DATE.PHIRE_DATE. PEMAIL. PEMAIL IN VARCHAR. PLAST_NAME IN VARCHAR. Insertar un nuevo empleado CREATE OR REPLACE PROCEDURE EMPLOYEE_INS ( PEMPLOYEE_ID IN NUMBER.PUT_LINE('DEPARTAMENTO: '||DEPARTAMENTO).PFIRST_NAME. 2.

3.END. porder_id in number ) as begin UPDATE ORDERS SET order_total = order_total + order_total*porcentaje/100 . Reducir el monto total en un porcentaje de una orden de pedido CREATE OR REPLACE PROCEDURE DESCONTAR_MONTOTOTAL ( porcentaje in number.

WHERE ORDER_ID = porder_id. END. veamos algunas datos de la table orders Ahora reducimos el monto total en un 14% a la orden de pedido: 2355 4. end. Eliminar un historial de ocupación de un empleado CREATE OR REPLACE PROCEDURE JOBHISTORY_DEL(PEMPLOYEE_ID IN NUMBER) AS BEGIN DELETE FROM JOB_HISTORY WHERE EMPLOYEE_ID = PEMPLOYEE_ID . . Antes de ejecutar el procedimiento veamos la lista de historial de ocupación y elegimos 1 de ellos. Antes de ejecutar el procedimiento.

jh. jh.department_id = d.employee_id INNER JOIN JOBS J ON jh. BEGIN SELECT e.job_id INNER JOIN DEPARTMENTS D ON jh. e. .department_id WHERE jh.first_name.employee_id = e. FECHA_INI. j. OCUPACION VARCHAR(35).FECHA_FIN.job_title. FECHA_FIN DATE. APELLIDOS VARCHAR(25). DEPARTAMENTO VARCHAR(30).last_name.start_date.5.job_id = j. OCUPACION. DEPARTAMENTO FROM JOB_HISTORY JH INNER JOIN EMPLOYEES E ON jh.employee_id = PEMPLOYEE_ID.end_date. d.department_name INTO NOMBRES. APELLIDOS. FECHA_INI DATE. Seleccionar historial de ocupación de un empleado CREATE OR REPLACE PROCEDURE JOBHISTORY_LST(PEMPLOYEE_ID IN NUMBER) AS NOMBRES VARCHAR(20). END.