Está en la página 1de 6

DICCIONARIO DEL MODELO

Emp (Maestra de Empleados) Empno = Cdigo del Empleado Ename = Nombre del Empleado Job = Nombre del Puesto de Trabajo Mgr = Cdigo del Empleado (que es su jefe) Hiredate = Fecha de Contratacin del Empleado Sal = Salario del Empleado Comm = Comisin del Empleado Deptno = Cdigo del Departamento(Relacion con la tabla Dept(Deptno)) Dept (Maestra de Departamentos) Deptno = Cdigo del departamento Dname = Nombre del Departamento Loc = Locacin (ubicacion del Departamento) Customer (Maestra de clientes) custid = Cdigo del cliente name = Nombre del cliente address = Direccin del cliente city = Cuidad del cliente state = Estado del Cliente zip = cdigo ciudad del Cliente area = rea del Cliente pone = Telfono del Cliente repid = cdigo del representante( Relacin con la tabla Emp(empno)) creditlimit =Limite de credito del cliente comments = Comentario Product (Maestra de Productos) prodid = Cdigo del producto descrip = descripcion del producto Ord (Ordenes) Ordid = Cdigo de la orden Orderdate = Fecha de la Orden custid = Cdigo del cliente ( Relacin con la tabla Customer(custid)) shipdate = fecha de envo de la orden total = Total de la orden empno = Empleado que genero la orden item (Detalle de las Ordenes) ordid = Cdigo del orden (Relacin con la tabla Ord(ordid)) prodid = Cdigo del producto (relacin con la tabla Product(prodid)) itemid = Identificador de la lnea por cada orden actualprice= precio del producto qty = cantidad del producto total = Total del producto solicitado

--->>> MANEJO DE VARIABLES

<<---

/*Implemente un prorama donde imprima el maximo y minimo precio de PrecioUnigad de item */ Declare mx number; mn number; Begin Select MAX(actualprice), MIN(actualprice) into mx,mn from item; dbms_output.put_line('Mayor Precio:'|| (mx)); dbms_output.put_line('Menor Precio:' || (mn) ); End; /*Implemente un programa donde imprima la cantidad de pedidos registrados en el ao 1986*/ Declare cant number; Begin Select COUNT(*) into cant from ord Where to_char(orderdate,'RRRR')='1986'; dbms_output.put_line('Cantidad de Pedidos:'||cant); End;

/*Implemente un programa donde liste los pedidos donde figure el producto 'ACE TENNIS BALLS-3 PACK' */ --recupero el idproducto del producto 'ACE TENNIS BALLS-3 PACK' Declare idp number; type reg_det is record (codigo ord.ordid%type, fecha ord.orderdate%type, precio item.actualprice%type, cantidad item.cantidad%type); type tab_prod is table of reg_det; v_arr tab_prod; Begin Select prodid into idp from product Where descrip='ACE TENNIS BALLS-3 PACK'; --Almacenar la informacion en un arrego de registros Select pc.ordid,pc.orderdate,pd.actualprice, pd.cantidad bulk collect into v_arr from ord pc , item pd Where pc.ordid = pd.ordid and pd.prodid=idp; --Listar los pedidos del producto solicitado for i in v_arr.first..v_arr.last loop dbms_output.put_line(v_arr(i).codigo || '-'|| v_arr(i).fecha || '-'|| v_arr(i).precio || '-'|| v_arr(i).cantidad ); end loop; End;

--->>> MANEJO DE LA ESTRUCTURA

CONDICIONAL <<---

/*Implemente un programa donde evalue la cantidad de pedidos realizado por el empleado de codigo 7934 en el ao: 1986 si no tiene pedidos ver "El empleado no ha generado pedidos", si ti ene 1 pedido: "El empleado solamente tiene 1 pedido"; sino imprima "Ha generado pedidos"*/ DECLARE idemp number; cantidad number; Begin idemp := 7934; /*Recupera la cantidad de pedidos del empleado de idempleado 6 y que los pedidos sean de este ao*/ SELECT COUNT(*) INTO cantidad FROM ord WHERE empno = idemp And TO_CHAR(orderdate,'RRRR')='1986'; IF cantidad = 0 THEN dbms_output.put_line('El empleado no ha generado algun pedido' ); ELSIF cantidad = 1 THEN dbms_output.put_line('Ha generado solamente 1 pedido'); ELSE dbms_output.put_line('Ha registrado pedidos ' || cantidad); END IF; End;

/*Implemente un programa que permita insertar o actualizar los datos de la tabla DEPT, utilice EXISTS*/ DECLARE cod number; nombre varchar(14); cuenta number; BEGIN cod := '60'; nombre := 'VENTAS'; select count(*) into cuenta FROM DEPT WHERE DEPTNO = cod; cuenta =1 then UPDATE dept SET dname = nombre WHERE deptno = cod; ELSE INSERT INTO dept(DEPTNO,DNAME) VALUES(cod, nombre); END IF; commit; END; IF

--->>> MANEJO DE LA ESTRUCTURA

SELECTIVA <<---

/*Imprima la expresion correspondiente al mes 4*/ DECLARE m number; mes varchar2(20); Begin m:=4; mes := (CASE m WHEN 1 THEN 'Enero' WHEN 2 THEN 'Febrero' WHEN 3 THEN 'Marzo' WHEN 4 THEN 'Abril' WHEN 5 THEN 'Mayo' WHEN 6 THEN 'Junio' WHEN 7 THEN 'Julio' WHEN 8 THEN 'Agosto' WHEN 9 THEN 'Setiembre' WHEN 10 THEN 'Octubre' WHEN 11 THEN 'Noviembre' WHEN 12 THEN 'Diciembre' ELSE 'No es mes valido' END); dbms_output.put_line(mes); End;

/*Implemente un programa donde evalue la columna Qty (cantidad); si el campo tiene mas de 100 unidades, imprima "Advertencia" si el campo tiene 100 unidades, imprima "Limite" si el campo tiene menos de 100 unidades, imprima "todo OK" */ DECLARE base number; type reg_det is record (producto product.descrip%type, precio item.actualprice%type, cantidad item.cantidad%type, estado varchar2(100) ); type tab_prod is table of reg_det; v_arr tab_prod; Begin base:=100; SELECT descrip, actualprice, cantidad , (CASE WHEN cantidad> base THEN 'Advertencia' WHEN cantidad=base THEN 'Limite' ELSE 'todo OK' END) bulk collect into v_arr FROM item i inner join PRODUCT p on i.prodid =p.prodid; --Listar los productos for i in v_arr.first..v_arr.last loop dbms_output.put_line(v_arr(i).producto || '-'|| v_arr(i).precio || '-'|| v_arr(i).cantidad || '-'|| v_arr(i).estado ); end loop; End;

/*Implemente un consulta que evalue la cantidad de pedidos registrados por cada empleado en este ao 1986 y 1987: si tiene hasta 3 pedidos imprima 'Cuota minima 3'; si tiene mas de 3 pedidos imprima 'Alcanzo la cuota', Ademas visualice los empleados que no tienen pedidos*/ Select ename,COUNT(*), (case When COUNT(*)<=3 Then 'Cuota minima 3' else 'Alcanzo la cuota' End) estado from emp e join ord p on e.empno=p.empno Where to_char(orderdate,'RRRR') in ('1986','1987') group by ename UNION Select ENAME,0,'No tienen pedido' from emp Where empno NOT IN (Select p.empno from ord p Where TO_CHAR(orderdate,'RRRR') in ('1986','1987')) --->>> MANEJO DEL WHILE <<--/*Implementa un programa donde evale a los cien primeros numeros, indicar si es un numero par o impar*/ DECLARE contador number:= 0; Begin While (contador < 100) loop contador := contador + 1; IF mod(contador, 2) =0 then dbms_output.put_line( contador || ' Numero Par'); ELSE dbms_output.put_line(contador || ' Numero Impar'); End if; End loop; END;

/*Implementa un programa donde liste los datos de cada empleado: idempleado, nombre del empleado*/ Declare idp number; nom varchar2(50); idpt number; Begin idp:=0; While (idP<>-1) loop --recupero los datos del empleado Select empno, ename into idp, nom From emp rownum=1; --imprimir dbms_output.put_line(idp ||' '|| nom ); Select empno into idpt

Where empno>idp and

from emp --evaluo, si es el ultimo codigo, asigno @id -1 where rownum=1 order by 1 desc; if idp=idpt then idp:=-1; end if; end loop; End; Go /*Impl emente un programa donde liste todos los productos */ Declare idp number; nom varchar2(50); idpt number; Begin idp:=0; While (idp<>-1) loop Select prodid, descrip into idp,nom From product Where prodid>idp and rownum=1; dbms_output.put_line(idp ||' '|| nom ); Select into from where if prodid idpt product --evaluo, si es el ultimo codigo, asigno @id -1 rownum=1 order by 1 desc;

idp=idpt then idp:=-1; end if; End loop; End;

/*Implemente un programa donde permite actualizar el salario de todos los empleados cuyo sueldo sea menor que 800 e incrementarlo en 10% */ Declare type reg_emp is record (codigo emp.empno%type, nombre emp.ename%type ); type tab_emp is table of reg_emp; v_arr tab_emp; Begin Select empno,ename bulk collect into v_arr from emp Where sal<800; if v_arr is not null and v_arr.count>0 then for i in v_arr.first..v_arr.last loop UPDATE emp SET sal=sal*1.10 Where empno=v_arr(i).codigo; dbms_output.put_line(v_arr(i).codigo ||' '|| v_arr(i).nombre ); commit; end loop; end if; END;

También podría gustarte