0% found this document useful (0 votes)
27 views17 pages

T.i.a.s.bd - Clase 06

clase 6
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views17 pages

T.i.a.s.bd - Clase 06

clase 6
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 17

;.

SET SERVEROUTPUT ON; //activar salidad de texto

Declare
sFecha Varchar2(40);
Begin
select to_char(sysdate,'dd/mm/yyyy hh24:mm:ss')
into sFecha from dual;
dbms_output.put_line( Hoy es: || sFecha );
End;
/
NOTA: / para compilar

Begin
dbms_output.put_line( HOLA MUNDO );
End;
/

CREATE OR REPLACE FUNCTION FACTORIAL (numero number) RETURN NUMBER


IS
factorial number := 1;
BEGIN
for i in 1 .. numero loop
factorial := i*factorial;
end loop;
return factorial;
END;
/

SELECT FACTORIAL(6) FROM DUAL;

CREATE OR REPLACE PROCEDURE FACTORIAL2 (numero number)


IS
factorial number := 1;
BEGIN
for i in 1 .. numero loop
factorial := i*factorial;
end loop;
dbms_output.put_line(factorial);
END;
/

BEGIN
FACTORIAL2(6);
END;
/

EXECUTE FACTORIAL2(6);

CREATE OR REPLACE PROCEDURE PA1 (vDEPARTMENT_ID number)


IS
vDEP_NOM varchar2(30);
BEGIN
select DEPARTMENT_NAME INTO vDEP_NOM
FROM DEPARTMENTS
WHERE DEPARTMENT_ID = vDEPARTMENT_ID;
dbms_output.put_line(vDEP_NOM);
END;
/
CREATE OR REPLACE PROCEDURE PA1 (vDEPARTMENT_ID number)
IS
vDEP_NOM varchar2(30);
vLOC_ID NUMBER(4);
BEGIN
select DEPARTMENT_NAME, LOCATION_ID INTO vDEP_NOM, vLOC_ID
FROM DEPARTMENTS
WHERE DEPARTMENT_ID = vDEPARTMENT_ID;
dbms_output.put_line(vDEP_NOM || ' ubicado en la zona nmero ' || vLOC_ID);
END;
/
EXEC PA1(100);

DESCRIBE DEPARTMENTS;

CREATE OR REPLACE PROCEDURE PA1V2 (vDEPARTMENT_ID DEPARTMENTS.DEPARTMENT_ID%type)


IS
vDEP_NOM DEPARTMENTS.DEPARTMENT_NAME%type;
vLOC_ID DEPARTMENTS.LOCATION_ID%type;
BEGIN
select DEPARTMENT_NAME, LOCATION_ID INTO vDEP_NOM, vLOC_ID
FROM DEPARTMENTS
WHERE DEPARTMENT_ID = vDEPARTMENT_ID;
dbms_output.put_line(vDEP_NOM || ' ubicado en la zona nmero ' || vLOC_ID);
END;
/
EXEC PA1V2(100);

CREATE OR REPLACE PROCEDURE PA2 (vDEPARTMENT_ID DEPARTMENTS.DEPARTMENT_ID%type)


IS
vEMP_NAM EMPLOYEES.FIRST_NAME%type;
vEMP_LAST EMPLOYEES.LAST_NAME%type;
BEGIN
select E.FIRST_NAME, E.LAST_NAME INTO vEMP_NAM, vEMP_LAST
FROM EMPLOYEES E JOIN DEPARTMENTS DP
ON (E.EMPLOYEE_ID = DP.MANAGER_ID)
WHERE DP.DEPARTMENT_ID = vDEPARTMENT_ID;
dbms_output.put_line('El administrador del Departamento numero ' ||
vDEPARTMENT_ID || ' es: ' || vEMP_NAM || ' ' || vEMP_LAST);
END;
/

EXEC PA2(100);

vDEP_NOM DEPARTMENTS.DEPARTMENT_NAME%type;

SELECT *
FROM DEPARTMENTS
WHERE DEPARTMENT_ID = 100;

SELECT *
FROM EMPLOYEES
WHERE EMPLOYEE_ID = 108;

select E.FIRST_NAME || ' ' || E.LAST_NAME


FROM EMPLOYEES E JOIN DEPARTMENTS DP
ON (E.EMPLOYEE_ID = DP.MANAGER_ID)
WHERE DP.DEPARTMENT_ID = 20;

>>> PA3 <<<

LISTAR CODIGO DEPARTAMENTOS, NOMBRE DEPARTAMENTOS CON MANAGER ID, NOMBRE COMPLETO
DE MANAGER

create or replace procedure pr102 (n number)


is
k number := 0;
begin
while (k<n) loop
insert into test( id,dato )
values( sqtest.nextval, 'Gustavo Coronel' );
k := k + 1;
end loop;
commit;
dbms_output.put_line('Proceso Ejecutado');
end;

CREATE OR REPLACE PROCEDURE PA3


IS

CURSOR C_DepMgr IS SELECT DP.DEPARTMENT_ID, DP.DEPARTMENT_NAME, DP.MANAGER_ID,


E.FIRST_NAME, E.LAST_NAME
FROM EMPLOYEES E JOIN DEPARTMENTS DP
ON (E.EMPLOYEE_ID = DP.MANAGER_ID)
ORDER BY DP.DEPARTMENT_ID;

vDEP_COD DEPARTMENTS.DEPARTMENT_ID%type;
vDEP_NOM DEPARTMENTS.DEPARTMENT_NAME%type;
vDEP_MAN DEPARTMENTS.MANAGER_ID%type;
vEMP_NAM EMPLOYEES.FIRST_NAME%type;
vEMP_LAST EMPLOYEES.LAST_NAME%type;
BEGIN

dbms_output.put_line('COD_DEP - DEPARTAMENTO - COD_MGR - MANAGER');


OPEN C_DepMgr;
FETCH C_DepMgr INTO vDEP_COD, vDEP_NOM, vDEP_MAN, vEMP_NAM, vEMP_LAST;
dbms_output.put_line(vDEP_COD || ' - ' || vDEP_NOM || ' - ' || vDEP_MAN || '
- ' || vEMP_NAM || ' - ' || vEMP_LAST);
while C_DepMgr%found loop
FETCH C_DepMgr INTO vDEP_COD, vDEP_NOM, vDEP_MAN, vEMP_NAM, vEMP_LAST;
dbms_output.put_line(vDEP_COD || ' - ' || vDEP_NOM || ' - ' || vDEP_MAN
|| ' - ' || vEMP_NAM || ' - ' || vEMP_LAST);
end loop;
close C_DepMgr;
END;
/
EXEC PA3;
open cursor_name;
fetch cursor_name into ... ;
while cursor_name%found loop
---------------
---------------
---------------
fetch cursor_name into ... ;
end loop;
close cursor_name;

SELECT COUNT(*)
FROM DEPARTMENTS
WHERE MANAGER_ID IS NULL;

CREATE OR REPLACE PROCEDURE PR114


IS
CURSOR C_AO IS SELECT FIRST_NAME, LAST_NAME , ROUND((SYSDATE-HIRE_DATE)/365,0) AS
TIEMPO FROM EMPLOYEES WHERE ROUND((SYSDATE-HIRE_DATE)/365,0) <12;
VFIRST_NAME EMPLOYEES.FIRST_NAME%TYPE;
VLAST_NAME EMPLOYEES.LAST_NAME%TYPE;
VCANT_AOS VARCHAR2(2);

BEGIN

DBMS_OUTPUT.PUT_LINE ('NOMBRE - APELLIDO - CANT_AOS.');


OPEN C_AO;
FETCH C_AO INTO VFIRST_NAME,VLAST_NAME, VCANT_AOS;
WHILE C_AO%FOUND LOOP
DBMS_OUTPUT.PUT_LINE (vFIRST_NAME || ' - ' || vLAST_NANE || ' - ' || vCANT_AOS);
FETCH C_AO INTO VFIRST_NAME,VLAST_NAME, VCANT_AOS;
END LOOP;
CLOSE C_AO;
END;
/
EXEC PR114

CREATE OR REPLACE PROCEDURE PR114


IS
CURSOR C_AO IS SELECT FIRST_NAME, LAST_NAME , ROUND((SYSDATE-HIRE_DATE)/365,0)
TIEMPO FROM EMPLOYEES WHERE ROUND((SYSDATE-HIRE_DATE)/365,0) < 12;
VFIRST_NAME EMPLOYEES.FIRST_NAME%type;
VLAST_NAME EMPLOYEES.LAST_NAME%type;
VCANT_AOS VARCHAR2(2);

BEGIN

DBMS_OUTPUT.PUT_LINE ('NOMBRE - APELLIDO - TIEMPO');


OPEN C_AO;
FETCH C_AO INTO VFIRST_NAME,VLAST_NAME, VCANT_AOS;
WHILE C_AO%found LOOP
DBMS_OUTPUT.PUT_LINE (VFIRST_NAME || ' - ' || VLAST_NANE || ' - ' || VCANT_AOS);
FETCH C_AO INTO VFIRST_NAME,VLAST_NAME, VCANT_AOS;
END LOOP;
CLOSE C_AO;
END;
/
EXEC PR114

CREATE OR REPLACE FUNCTION FR114 (VEMP_ID EMPLOYEES.EMPLOYEE_ID%type, N1 NUMBER)


RETURN NUMBER
IS
VEMP_ID EMPLOYEES.EMPLOYEE_ID%type;
V_SAL EMPLOYEES.SALARY%type;
V_NUESAL NUMBER ;

BEGIN
SELECT SALARY INTO V_SAL FROM EMPLOYEES WHERE EMPLOYEE_ID=VEMP_ID

V_NUESAL:= V_SAL+ N1 ;

RETURN V_NUESAL;
END;
/

DECLARE
V_NUESAL EMPLOYEES.SALARY%type:=(20,20)
BEGIN
DBMS_OUTPUT.PUT_LINE(V_NUESAL);
END;
EXEC FR114(20,20);

PROCEDIMIENTO AUMENTE EL SALARIO DE LOS EMPLEADOS SEGUN BONIFICACION

=========================================================================
CREATE OR REPLACE FUNCTION FR114(VEMP_ID EMPLOYEES.EMPLOYEE_ID%type, N1 NUMBER)
RETURN EMPLOYEES.SALARY%type
IS
V_SAL EMPLOYEES.SALARY%type;
V_NUESAL EMPLOYEES.SALARY%type;

BEGIN
SELECT SALARY INTO V_SAL FROM EMPLOYEES WHERE EMPLOYEE_ID=VEMP_ID;

V_NUESAL:= V_SAL+ N1 ;

RETURN V_NUESAL;
END;

DECLARE
V_NUEVO NUMBER :=FR114 (100,20);
BEGIN
DBMS_OUTPUT.PUT_LINE(V_NUEVO);
END;
==========================================================================
CREATE OR REPLACE PROCEDURE PR114(DEPARTMENT_ID)
IS
CURSOR C_EMP IS SELECT FIRST_NAME, LAST_NAME , EMPLOYEE_ID, DEEPARTMENT_ID, SALARY;

VFIRST_NAME EMPLOYEES.FIRST_NAME%type;
VLAST_NAME EMPLOYEES.LAST_NAME%type;
VEMPLOYEE_ID EMPLOYEES-EMPLOYEE_ID%type;
VDEPARTMENT_ID EMPLOYEES.ID%type;
VSALARIO EMPLOYEES.SALARY%type;
V_NUEVO NUMBER;

BEGIN

DBMS_OUTPUT.PUT_LINE ('NOMBRE - APELLIDO - EMPLEADO ID - DEPARTAMENTO - SALARIO -


NUEVO_SALARIO');
OPEN C_EMP;
FETCH C_EMP INTO VFIRST_NAME,VLAST_NAME,VEMPLOYEE_ID,VDEPARTEMENT_ID,VSALARIO;
WHILE C_EMP%FOUND LOOP
V_NUEVO NUMBER :=FR114 (EMPLOYEE_ID,20);
DBMS_OUTPUT.PUT_LINE (VFIRST_NAME || ' - ' || VLAST_NANE ||' - ' || VEMPLOYEE_ID ||
' - ' || VDEPARTMENT_ID||' - ' || VSALARIO||' - ' || VNUEVO);
FETCH C_EMP INTO VFIRST_NAME,VLAST_NAME,VEMPLOYEE_ID,VDEPARTEMENT_ID,VSALARIO;
END LOOP;
CLOSE C_EMP;
END;
/
EXEC PR114

CREATE OR REPLACE PROCEDURE PR114(VDEPARTMENT_ID EMPLOYEES.DEPARTMENT_ID%type,N


NUMBER)
IS
CURSOR C_EMP IS SELECT EMPLOYEE_ID, DEEPARTMENT_ID,FROM EMPLOYEES WHERE
DEPARTMENT_ID=VDEPARTMENT_ID;
VEMPLOYEE_ID EMPLOYEES.EMPLOYEE_ID%type;
V_NUEVO NUMBER;

BEGIN

OPEN C_EMP;
FETCH C_EMP INTO VEMPLOYEE_ID,VDEPARTEMENT_ID;
WHILE C_EMP%FOUND LOOP
V_NUEVO :=FR114 (EMPLOYEE_ID,20);
DBMS_OUTPUT.PUT_LINE ( VNUEVO);
END LOOP;
CLOSE C_EMP;
END;
model datos , procesos , normalizacion , cartera de proyectos de un plan de
ti,aspectos de revision del plan mision vision , objetivos, metas ; iso 9001 ,
biometria

create or replace PROCEDURE PR114(DEP_ID EMPLOYEES.DEPARTMENT_ID%type,N NUMBER)


IS
CURSOR C_EMP IS SELECT EMPLOYEE_ID, DEPARTMENT_ID FROM EMPLOYEES WHERE
DEPARTMENT_ID = DEP_ID;
V_NUEVO NUMBER;
VEMPLOYEE_ID EMPLOYEES.EMPLOYEE_ID%type;
VDEPARTMENT_ID EMPLOYEES.DEPARTMENT_ID%type;

BEGIN

OPEN C_EMP;
FETCH C_EMP INTO VEMPLOYEE_ID, VDEPARTMENT_ID;
FOR R IN C_EMP LOOP
V_NUEVO := FR114 (VEMPLOYEE_ID,20);
DBMS_OUTPUT.PUT_LINE (VEMPLOYEE_ID || ' - ' || VDEPARTMENT_ID||' - ' || V_NUEVO);
END LOOP;
CLOSE C_EMP;
END;

BEGIN
PR114(90,20);
END;

create or replace PROCEDURE PR114(DEP_ID EMPLOYEES.DEPARTMENT_ID%type,N NUMBER)


IS
CURSOR C_EMP IS SELECT EMPLOYEE_ID, DEPARTMENT_ID FROM EMPLOYEES WHERE
DEPARTMENT_ID = DEP_ID;
V_NUEVO NUMBER;
VEMPLOYEE_ID EMPLOYEES.EMPLOYEE_ID%type;
VDEPARTMENT_ID EMPLOYEES.DEPARTMENT_ID%type;

BEGIN

FOR R IN C_EMP LOOP


V_NUEVO := FR114 (VEMPLOYEE_ID,20);
DBMS_OUTPUT.PUT_LINE (VEMPLOYEE_ID || ' - ' || VDEPARTMENT_ID||' - ' || V_NUEVO);
END LOOP;
END;

CREATE OR REPLACE PROCEDURE PRVENTAS(SYSDATE)


IS
CURSOR C_VENTA IS SELECT TB_PAGOCLIENTE_FEC,TB_PAGOCLIENTE_IMP FROM TB_PAGOCLIENTE
WHERE TB_PAGOCLIENTE_FEC<=SYSDATE;
VPAGCLIENTE_FEC TB_PAGOCLIENTE_FEC%type;
VPAGCLIENTE_IMP TB_PAGOCLIENTE_IMP%type;
VCANT_VENTA=NUMBER;

BEGIN

DBMS_OUTPUT.PUT_LINE ('CANTIDAD VENTA ');


OPEN C_VENTA;
FETCH C_VENTA INTO VPAGCLIENTE_FEC,VPAGCLIENTE_IMP;
WHILE C_VENTA %found LOOP
VCANT_VENTA:=0+VPAGCLIENTE_IMP;
DBMS_OUTPUT.PUT_LINE (VCANT_VENTA);
FETCH C_VENTA INTO VPAGCLIENTE_FEC,VPAGCLIENTE_IMP;
END LOOP;
CLOSE C_VENTA;
END;
/
EXEC PRVENTAS

CREATE OR REPLACE PROCEDURE FACTORIAL2 (numero number)


IS
factorial number := 1;
BEGIN
for i in 1 .. numero loop
factorial := i*factorial;
end loop;
dbms_output.put_line(factorial);
END;
/

BEGIN
FACTORIAL2(6);
END;
/

CREATE OR REPLACE FUNCTION FR114(SYSDATE) RETURN PAGOCLIENTE_IMP%type


IS
VPAGCLIENTE_FEC TB_PAGOCLIENTE_FEC%type;
VPAGCLIENTE_IMP TB_PAGOCLIENTE_IMP%type;
VCANT_VENTA TB_PAGOCLIENTE_IMP%type;

BEGIN
SELECT TB_PAGOCLIENTE_FEC,TB_PAGOCLIENTE_IMP INTO V_CANT_VENTA FROM TB_PAGOCLIENTE
WHERE _ID=VEMP_ID;

V_NUESAL:= V_SAL+ N1 ;

RETURN V_NUESAL;
END;

DECLARE
V_NUEVO NUMBER :=FR114 (100,20);
BEGIN
DBMS_OUTPUT.PUT_LINE(V_NUEVO);
END;
VENTAS=========
CREATE OR REPLACE PROCEDURE PRVENTAS(NUMERO NUMBER)
IS
CURSOR C_VENTA IS SELECT TB_PAGOCLIENTE_FEC,TB_PAGOCLIENTE_IMP FROM TB_PAGOCLIENTE
WHERE TB_PAGOCLIENTE_ID<=NUMERO;
VPAGCLIENTE_FEC TB_PAGOCLIENTE_FEC%type;
VPAGCLIENTE_IMP TB_PAGOCLIENTE_IMP%type;
VCANT_VENTA=NUMBER;

BEGIN

DBMS_OUTPUT.PUT_LINE ('CANTIDAD VENTA ');


OPEN C_VENTA;
FETCH C_VENTA INTO VPAGCLIENTE_FEC,VPAGCLIENTE_IMP;
WHILE C_VENTA %found LOOP
VCANT_VENTA:=0+VPAGCLIENTE_IMP;
DBMS_OUTPUT.PUT_LINE (VCANT_VENTA);
FETCH C_VENTA INTO VPAGCLIENTE_FEC,VPAGCLIENTE_IMP;
END LOOP;
CLOSE C_VENTA;
END;
/
====================================================
STOCK ACTUAL POR PRODUCTO

CREATE OR REPLACE FUNCTION FR114(VPRODUCTO_ID TB_PRODUCTO.TB_PRODUCTO_ID%type)


RETURN NUMBER
IS

V_STOCK NUMBER;

BEGIN
SELECT TB_PRODUCTO_STOACT INTO V_STOCK FROM TB_PRODUCTO WHERE
TB_PRODUCTO_ID=VPRODUCTO_ID;

RETURN V_STOCK;
END;

DECLARE
V_STOC NUMBER :=FR114 (1);
BEGIN
DBMS_OUTPUT.PUT_LINE(V_STOC);
END;
====================================================
CREATE OR REPLACE PROCEDURE PRVENTAS(NUMERO NUMBER)
IS
CURSOR C_VENTA IS SELECT TB_PAGOCLIENTE_IMP FROM TB_PAGOCLIENTE WHERE
TB_PAGOCLIENTE_ID<=NUMERO;

VPAGCLIENTE_IMP TB_PAGOCLIENTE.TB_PAGOCLIENTE_IMP%type;
VCANT_VENTA NUMBER;

BEGIN

DBMS_OUTPUT.PUT_LINE ('CANTIDAD VENTA ');


OPEN C_VENTA;
FETCH C_VENTA INTO VCANT_VENTA;
WHILE C_VENTA %found LOOP
VCANT_VENTA:=1VCANT_VENTA;
DBMS_OUTPUT.PUT_LINE (VCANT_VENTA);
FETCH C_VENTA INTO VCANT_VENTA;
END LOOP;
CLOSE C_VENTA;
END;
BEGIN
PRVENTAS(2);
END;
==========================================================

CREATE OR REPLACE FUNCTION FR114(SYSDATE) RETURN PAGOCLIENTE_IMP%type


IS
VPAGCLIENTE_FEC TB_PAGOCLIENTE_FEC%type;
VPAGCLIENTE_IMP TB_PAGOCLIENTE_IMP%type;
VCANT_VENTA TB_PAGOCLIENTE_IMP%type;

BEGIN
SELECT TB_PAGOCLIENTE_FEC,TB_PAGOCLIENTE_IMP INTO V_CANT_VENTA FROM TB_PAGOCLIENTE
WHERE _ID=VEMP_ID;

V_NUESAL:= V_SAL+ N1 ;

RETURN V_NUESAL;
END;

DECLARE
V_NUEVO NUMBER :=FR114 (100,20);
BEGIN
DBMS_OUTPUT.PUT_LINE(V_NUEVO);
END;

======================================================
create or replace PROCEDURE UPDATESALEMP(CODIGO EMPLOYEES.EMPLOYEE_ID%type,SALARIO
EMPLOYEES.SALARY%TYPE)
IS

CONT NUMBER;
SELECT COUNT(*) INTO CONT FROM EMPLOYEES WHERE EMPLOYEE_ID=CODIGO;

IF(CONT=0) THEN
RAISSE_APPLICATION_ERROR(-20000,'NO EXISTE EMPLEADO.');
END IF
UPDATE EMPLOYEE
SET SALARY=SALARIO;
WHERE EMPLOYEE_ID=CODIGO;
COMMIT;

DBMS_OUTPUT.PUT_LINE ('PROCESO OK ');


END;

BEGIN
UPDATESALEMP(2,200);
END;

===============================================================
create or replace PROCEDURE UPDATESALEMP(CODIGO EMPLOYEES.EMPLOYEE_ID%type,SALARIO
EMPLOYEES.SALARY%type)
IS
CONT NUMBER;
BEGIN

SELECT COUNT (*) INTO CONT FROM EMPLOYEES WHERE EMPLOYEE_ID=CODIGO;

IF(CONT=0) THEN
RAISE_APPLICATION_ERROR(-20000,'NO EXISTE EMPLEADO.');
END IF ;
UPDATE EMPLOYEES
SET SALARY=SALARIO
WHERE EMPLOYEE_ID=CODIGO;
COMMIT;

DBMS_OUTPUT.PUT_LINE ('PROCESO OK ');


END;

BEGIN
UPDATESALEMP(2,200);
END;

===============================================================
procedimiento para mostrar un mensaje si es que se quiere cambias los horarios
de oficina

create or replace PROCEDURE seguridad_dml


IS
BEGIN
IF TO_CHAR (SYSDATE, 'HH24:MI') NOT BETWEEN '08:00' AND '11:00'
OR TO_CHAR (SYSDATE, 'DY') IN ('SAT', 'SUN') THEN
RAISE_APPLICATION_ERROR (-20205,'los cambios se deben hacer en horario de
oficina');
END IF;
end;

===============================================================
agregando al tiggers seguridad_empleados(se llama a procedimientos
seguridad_dml)

create or replace TRIGGER seguridad_empleados


BEFORE UPDATE ON employees
BEGIN
seguridad_dml;
END seguridad_empleados;?

=============================================================

ejercicio

select * from employees where employee_id='120';


update employees
set last_name ='vidal'
where employee_id='120';
before ----> antes
after------> despues
EJERICIO 1
update employees
set job_id ='PU_CLERK',Department_id=50
where employee_id='120';

==================================================

create or replace PROCEDURE PR115(APELLIDO EMPLOYEES.FIRST_NAME%type, NOMBRE


EMPLOYEES.LEST_NAME%type)
IS

NOM_DEP DEPARTMETNS.DEPARTMENT_NAME%type;
NOM_PUESTOS JOBS.JOB_TITLE%TYPE;

BEGIN
SELECT DEPARTMENT_NAME , JOB_TITLE INTO NOM_DEP,NOM_PUESTOS
FROM DEPARTMENTS,JOB_HISTORY,JOBS,EMPLOYEES
WHERE DEPARTMENTS.DEPARTMENT_ID=JOB_HISTORY.DEPARTMENT_ID AND
JOB_HISTORY.JOB_ID=JOBS.JOB_ID AND
FIRST_NAME= 'APELLIDO' AND
LAST_NAME= 'NOMBRE';
dbms_output.put_line(NOM_DEP || NOM_PUESTOS);

END;
/
EXEC PA1V2(100);

===================================================================================
===========

CREATE OR REPLACE PROCEDURE PR115


IS
CURSOR C_EMPLEADO IS SELECT EMPLOYEE_ID , LAST_NAME ,DEPARTMENT_ID MANAGER_ID,
COUNT(MANAGER_ID)
FROM EMPLOYEES
GROUP BY MANAGER_ID
ORDER BY MANAGER_ID ASC;
VEMP_ID EMPLOYEES.EMPLOYEE_ID%type;
VLAST_NAME EMPLOYEES.LAST_NAME%type;
VDEP_ID EMPLOYEES.DEPARTMENT_ID%type;
VMAG_ID EMPLOYEES.MANAGER_ID%type;

BEGIN

DBMS_OUTPUT.PUT_LINE ('CODIGO- APELLIDO - DEPARTAMENTO- MANAGER');


OPEN C_EMPLEADO;
FETCH C_EMPLEADO INTO VEMP_ID,VLAST_NAME, VDEP_ID,V_MAN_ID;
WHILE C_AO%found LOOP
DBMS_OUTPUT.PUT_LINE (VEMP_ID|| ' - ' || VLAST_NANE || ' - ' || VDEP_ID ' - ' ||
V_MAN_ID);
FETCH C_EMPLEADO INTO VEMP_ID,VLAST_NAME, VDEP_ID,V_MAN_ID;
END LOOP;
CLOSE C_EMPLEADO;
END;
/
EXEC PR15
EXEC PA1V2(100);

SQL> SELECT MANAGER_ID, COUNT(MANAGER_ID)


2 FROM EMPLOYEES
3 GROUP BY MANAGER_ID
4 ORDER BY MANAGER_ID ASC;

SELECT EMPLOYEES.FIRST_NAME= Steven, DEPARTMENT_NAME , JOB_TITLE


FROM DEPARTMENTS,JOB_HISTORY,JOBS,EMPLOYEES
WHERE DEPARTMENTS.DEPARTMENT_ID=JOB_HISTORY.DEPARTMENT_ID AND
JOB_HISTORY.JOB_ID=JOBS.JOB_ID AND
EMPLOYEES.FIRST_NAME= 'Steven' AND
EMPLOYEES.LAST_NAME= 'King';

WHERE DEPARTMENT_ID IN (SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE FIRST_NAME)

SELECT MANAGER_ID
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN ( SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE
EMPLOYEES.FIRST_NAME= Steven AND
EMPLOYEES.LAST_NAME= King);

create or replace PROCEDURE PR115(APELLIDO EMPLOYEES.FIRST_NAME%type, NOMBRE


EMPLOYEES.LAST_NAME%type)
IS

NOM_DEP DEPARTMENTS.DEPARTMENT_NAME%type;
NOM_PUESTOS JOBS.JOB_TITLE%TYPE;

BEGIN
SELECT DEPARTMENT_NAME , JOB_TITLE INTO NOM_DEP,NOM_PUESTOS
FROM DEPARTMENTS,JOB_HISTORY,JOBS,EMPLOYEES
WHERE DEPARTMENTS.DEPARTMENT_ID=JOB_HISTORY.DEPARTMENT_ID AND
JOB_HISTORY.JOB_ID=JOBS.JOB_ID AND
EMPLOYEES.FIRST_NAME= APELLIDO EMPLOYEES.FIRST_NAME%type AND
EMPLOYEES.LAST_NAME= NOMBRE EMPLOYEES.LAST_NAME%type;
dbms_output.put_line(NOM_DEP || NOM_PUESTOS);

END;

BEGIN
PR115(Ellen,Abel);
END;

servidor oracle
================
insatancia y base de datos

estructura de memoria de oracle


- sga (area global del sistema)

-COMPONENTE FISICOS DE LA BD

ARCHIVOS DE CONTROL (INFORMACION DE LA BD)


ARCHIVOS DE DATOS(DATOS DE LA BD)
ARCHIVOS DE LOG

-TABLESPACES Y ARCHIVOS DE DATOS

ALGUNOS ARCHIVOS DE DATOS SE ENCUENTRAN EN UN TABLESPACES

-TABLESPACES SYSTEM Y SYSAUX


SE CREN EN EL MOMENTO DE CREACION DE LA BD

TABLAS DE DICCIONARIOS DE DATOS(SYSTEM)


REPOSITORIO (SYSAUX)

-SEGEMENTOS, EXTENSIONES Y BLOQUES

LOS SEGMENTOS SE GUARDAN TABLESPACES ESTAN FORMADO POR EXTENSIONES

ESQUEMAS

CONJUENTO DE DATOS DE UN SOLO USUARIO

PARA CONSULTAR EL NOMBRE DE UNA BAE DE DATOS DIFERENTE AL ESQUEMA HR

CONNECT SYS/ AS SYSDBA;


SELECT instancce_name FROM V$Instance;
PROCEDIMIENTO PARA INSERTAR UN NUEVO PRODUCTO

CREATE OR REPLACE PROCEDURE INS_PRODUCTO(ID TB_PRODUCTO.TB_PRODUCTO_ID%type,COD


TB_PRODUCTO.TB_PRODUCTO_COD%type, NOM TB_PRODUCTO.TB_PRODUCTO_NOM%type ,DES
TB_PRODUCTO.TB_PRODUCTO_DES%type,STOACT TB_PRODUCTO.TB_PRODUCTO_STOACT%type,
ID_FAMILIA TB_PRODUCTO.TB_FAMILIAPRODUCTO_ID%type)
IS
BEGIN
INSERT INTO TB_PRODUCTO VALUES(ID, COD , NOM,DES,STOACT, ID_FAMILIA );
COMMIT;
DBMS_OUTPUT.PUT_LINE('PROCESO OK');
END;

BEGIN
INS_PRODUCTO(4,1003,ALAMBRE,FIERRO,20,3);
END;

PROCEDIMIENTO PARA ACTUALIZAR UN PRODUCTO

CREATE OR REPLACE PROCEDURE ACT_PRODUCTO(ID TB_PRODUCTO.TB_PRODUCTO_ID%type,COD


TB_PRODUCTO.TB_PRODUCTO_COD%type, NOM TB_PRODUCTO.TB_PRODUCTO_NOM%type ,DES
TB_PRODUCTO.TB_PRODUCTO_DES%type,STOACT TB_PRODUCTO.TB_PRODUCTO_STOACT%type,
ID_FAMILIA TB_PRODUCTO.TB_FAMILIAPRODUCTO_ID%type)
IS
BEGIN
UPDATE TB_PRODUCTO SET TB_PRODUCTO_NOM=NOM WHERE TB_PRODUCTO_ID= ID;
UPDATE TB_PRODUCTO SET TB_PRODUCTO_DES=DES WHERE TB_PRODUCTO_ID= ID;
UPDATE TB_PRODUCTO SET TB_PRODUCTO_STOACT=STOACT WHERE TB_PRODUCTO_ID= ID;
UPDATE TB_PRODUCTO SET TB_FAMILIAPRODUCTO_ID=ID_FAMILIA WHERE TB_PRODUCTO_ID= ID;
COMMIT;
DBMS_OUTPUT.PUT_LINE('PROCESO OK');
END;

BEGIN
ACT_PRODUCTO(4,1003,'ALAMBRE','FIERRO',20,3);
END;

PROCEDIMIENTO PARA ELIMINAR UN PRODUCTO

CREATE OR REPLACE PROCEDURE ELIMINAR_PRODUCTO(ID TB_PRODUCTO.TB_PRODUCTO_ID%type)


IS
DELETE TB_PRODUCTO WHERE TB_PRODUCTO_ID= ID;
COMMIT;
DBMS_OUTPUT.PUT_LINE('PROCESO OK');
END;

BEGIN
ELIMINAR_PRODUCTO(4);
END;

PROCEDIMIENTO PARA CALCULAR EL NUMERO DE PEDIDOS ENTREGADOS

CREATE OR REPLACE PROCEDURE CALCULAR_PEDIDOS_ENTREGADOS


IS
type reg is record(
numero TB_PEDIDO.TB_PEDIDO_ID%type
);
p reg;
BEGIN
SELECT COUNT(*) INTO p FROM TB_PEDIDO WHERE TB_PEDIDO_FECEMI<SYSDATE AND
TB_PEDIDO_FECEMI+1<=SYSDATE ;
DBMS_OUTPUT.PUT_LINE('EL NUMERO DE PEDIDOS ENTREGADOS SON:'||p.numero);
END;

BEGIN
CALCULAR_PEDIDOS_ENTREGADOS;
END;

PROCEDIMIENTO PARA CALCULAR EL NUMERO DE PEDIDOS NO ENTREGADOS

CREATE OR REPLACE PROCEDURE CALCULAR_PEDIDOS_NO_ENTREGADOS


IS
type reg is record(
numero TB_PEDIDO.TB_PEDIDO_ID%type
);
p reg;
BEGIN
SELECT COUNT(*) INTO p FROM TB_PEDIDO WHERE TB_PEDIDO_FECEMI<SYSDATE AND
TB_PEDIDO_FECEMI+1>SYSDATE ;
DBMS_OUTPUT.PUT_LINE('EL NUMERO DE PEDIDOS NO ENTREGADOS SON:'||p.numero);
END;

BEGIN
CALCULAR_PEDIDOS_NO_ENTREGADOS;
END;

PROCEDIMIENTO PARA CALCULAR LAS PLANILLAS DE TRABAJADORES

CREATE OR REPLACE PROCEDURE PLANILLAS_TRABAJADORES


IS
CURSOR C_EMP IS SELECT
TB_EMPLEADO_COD,TB_EMPLEADO_NOM,TB_EMPLEADO_APELL,TB_EMPLEADOSALARI FROM
TB_EMPLEADO;
V_COD TB_EMPLEADO.TB_EMPLEADO_COD%type;
V_NOM TB_EMPLEADO.TB_EMPLEADO_NOM%type;
V_APELL TB_EMPLEADO.TB_EMPLEADO_APELL%type;
V_SALARIO TB_EMPLEADO.TB_EMPLEADOSALARI%type;

BEGIN

DBMS_OUTPUT.PUT_LINE('COD_EMPLEADO - NOMBRE_EMPLEADO - APELLIDO_EMPLEADO -


SALARIO');
OPEN C_EMP;
FETCH C_EMP INTO V_COD, V_NOM, V_APELL,V_SALARIO;
dbms_output.put_line(V_COD || ' - ' || V_NOM || ' - ' || V_APELL || ' - ' ||
V_SALARIO);
while C_EMP%found loop
FETCH C_EMP INTO V_COD, V_NOM, V_APELL,V_SALARIO;
dbms_output.put_line(V_COD || ' - ' || V_NOM || ' - ' || V_APELL || ' - ' ||
V_SALARIO);
end loop;
close C_EMP;
END;

BEGIN
PLANILLAS_TRABAJADORES;
END;

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy