CREAR TABLAS
CREATE TABLE EMPLDO_ORDEN01(CDGO_EMPLDO NUMBER(7)NOT NULL,
NMBRE_EMPLDO VARCHAR2(25)NOT NULL,
NMBRE_DPRTMNTO VARCHAR2(20)NOT NULL,
SALARIO NUMBER(11,2)NOT NULL,
RANGO VARCHAR2(20)NOT NULL,
ESTADO VARCHAR2(1) DEFAULT 'N',CONSTRAINT CHK_ESTADO CHECK(ESTADO IN('S','N')));
CREATE TABLE EMPLDO_ORDEN02(CDGO_EMPLDO NUMBER(7)NOT NULL,
NMBRE_EMPLDO VARCHAR2(25)NOT NULL,
NMBRE_DPRTMNTO VARCHAR2(20)NOT NULL,
SALARIO NUMBER(11,2)NOT NULL,
RANGO VARCHAR2(20)NOT NULL,
ESTADO VARCHAR2(1) DEFAULT 'N',CONSTRAINT CHK_ESTADO02 CHECK(ESTADO
IN('S','N')));
-----------------------------------
********************************---------------------------------------------------
------------
SELECT [Link] , COUNT([Link]) , [Link]
FROM INVENTARIO I , PRODUCTO P , BODEGA B
WHERE I.CODIGO_PRODUCTO = [Link] AND
[Link] = I.CODIGO_BODEGA
GROUP BY [Link] ,[Link], [Link] ;
-----------------------------
*****************************--------------------------------------------
SELECT [Link] , [Link] , [Link]
FROM PRODUCTO P, BODEGA B, INVENTARIO I
WHERE [Link] = I.CODIGO_PRODUCTO
AND I.CODIGO_BODEGA = [Link] AND
[Link] = 'Himalaya Tires';
----------------------------------------------
****************************---------------------------------------------
SELECT T.CODIGO_ITEM , MIN([Link]) AS MINIMO_DE_ESTOCK , [Link] AS
CODIGO_DE_BODEGA
FROM ITEM T , INVENTARIO I , PRODUCTO P, BODEGA B
WHERE T.CODIGO_PRODUCTO = I.CODIGO_PRODUCTO
AND I.CODIGO_BODEGA = [Link]
GROUP BY I.CODIGO_BODEGA , [Link], T.CODIGO_ITEM;
--------------------------------------------
************************--------------------------------------------------
RETOS
SELECT [Link] "REGION" , [Link] "EMPLEADO HIZO MAYOR VENTA" , [Link] "VALOR
VENTA"
FROM REGION R, ORDEN O, CLIENTE C , EMPLEADO E
WHERE O.CODIGO_REP_VENTAS = [Link]
AND O.CODIGO_CLIENTE = [Link]
AND C.CODIGO_REGION = [Link]
AND (O.CODIGO_REP_VENTAS, [Link]) IN (SELECT [Link] , MAX([Link] ) TOTAL
FROM ORDEN O, EMPLEADO E
WHERE O.CODIGO_REP_VENTAS = [Link]
GROUP BY O.CODIGO_REP_VENTAS)
------------------------------------------
****************************_______________________________________________________
_____________________________
SELECT [Link] AS EMPLEADO ,[Link] AS CLIENTE , [Link] AS CODIGO_CLIENTE ,
MAX([Link]) AS VENTA
FROM ORDEN O, CLIENTE C , EMPLEADO E
WHERE O.CODIGO_CLIENTE = [Link] AND
C.CODIGO_REP_VENTAS = [Link]
GROUP BY [Link], [Link] , [Link];
------------------------------------******** SITPR _LISTAR CLIENTE QUE MAS
COMPRARON*****************************------------------------------------------
CREATE OR REPLACE PROCEDURE SITPR_lISTAR_CLIENTE
IS
CURSOR C1 IS SELECT [Link] AS EMPLEADO ,[Link] AS CLIENTE ,
[Link] AS CODIGO_CLIENTE , MAX([Link]) AS VENTA
FROM ORDEN O, CLIENTE C , EMPLEADO E
WHERE O.CODIGO_CLIENTE = [Link] AND
C.CODIGO_REP_VENTAS = [Link]
GROUP BY [Link], [Link] , [Link];
BEGIN
FOR R1 IN C1 LOOP
DBMS_OUTPUT.PUT_LINE
('CODIGO EMPLEADO :'|| [Link] || 'NOMBRE CLIENTE :'
|| [Link] ||'CODIGO CLIENTE :'|| R1.CODIGO_CLIENTE ||'TOTAL VENTA :' ||
[Link]);
END LOOP;
END SITPR_lISTAR_CLIENTE ;
--------------------------------------------
*************************SITPR_lISTAR_PRODUCTOS***********************-------------
------------------------------------------------
CREATE OR REPLACE PROCEDURE SITPR_lISTAR_PRODUCTOS
IS
CURSOR C1 IS SELECT [Link] , [Link] , [Link] CODG
FROM PRODUCTO P, BODEGA B, INVENTARIO I
WHERE [Link] = I.CODIGO_PRODUCTO
AND I.CODIGO_BODEGA = [Link] AND
[Link] = 'Himalaya Tires';
BEGIN
FOR R1 IN C1 LOOP
DBMS_OUTPUT.PUT_LINE('CODIGO PRODUCTO :'|| [Link]
|| 'NOMBRE PRODUCTO:' || [Link] || 'CODIGO BODEGA :' || [Link]);
END LOOP;
END SITPR_lISTAR_PRODUCTOS ;
-----------------------------************ FUNCION DEVOLVER_STOCK
*******************----------------------------------------------------------------
--------
CREATE OR REPLACE FUNCTION DEVOLVER_STOCK(P_CODIGO_BODEGA INVENTARIO.CODIGO_BODEGA
%TYPE,
P_CODIGO_PRODUCTO
INVENTARIO.CODIGO_PRODUCTO%TYPE)
RETURN NUMBER
IS
V_STOCK [Link]%TYPE;
CURSOR C1 IS
SELECT [Link] , [Link] , COUNT([Link]) STO
FROM INVENTARIO I , PRODUCTO P , BODEGA B
WHERE I.CODIGO_PRODUCTO = P_CODIGO_PRODUCTO
AND I.CODIGO_BODEGA = P_CODIGO_BODEGA
GROUP BY [Link] ,[Link] , [Link] ;
BEGIN
V_STOCK := 0;
FOR R1 IN C1 LOOP
V_STOCK := [Link];
dbms_output.put_line('ASIGNANDO VALOR A LA VARIABLE V_STOCK');
END LOOP;
IF V_STOCK = 0 THEN
dbms_output.put_line('VALORES INCORRECTOS');
END IF;
RETURN V_STOCK;
END DEVOLVER_STOCK;
--------------------------------------------******************LISTAR NOMBRE
EMPLEADO CONTENGAN A****************----------------------------------------------
CREATE OR REPLACE PROCEDURE SITPR_lISTAR_NOMBRE
is
cursor C1 is SELECT NOMBRE
FROM EMPLEADO
WHERE NOMBRE LIKE LOWER('%A%');
BEGIN
FOR R1 IN C1 LOOP
DBMS_OUTPUT.put_line('NOMBRE CONTENGAN A :' || [Link]);
END LOOP;
END;
-----------------------------------------------------EMPLEADOS POR DEPARTAMENTO ,
VISUALIZAR MAYORES AQUELLOS DEP 20
EMPLEADOS------------------------------------------
select max([Link]) TOTAL , e.codigo_dept
from empleado e , departamento d
where e.codigo_dept = [Link]
group by e.codigo_dept , [Link]
having max([Link]) > 20
----------------------******************************VENTAS POR PERIODO Y EMPLEADO
QUE HIZO LA VENTA_________________________________________________
SELECT [Link] , [Link] ,[Link], [Link] FROM EMPLEADO E , ORDEN O , CLIENTE
C
WHERE [Link] = O.CODIGO_REP_VENTAS AND
O.CODIGO_CLIENTE = [Link] AND
C.CODIGO_REP_VENTAS = [Link] AND (O.CODIGO_REP_VENTAS,[Link]) IN
(SELECT O.CODIGO_REP_VENTAS , SUM([Link])
FROM ORDEN O
WHERE
TO_CHAR(O.FECHA_ORDEN, 'YYYYMMDD')
BETWEEN '19920801' AND '19920931'
GROUP BY O.CODIGO_REP_VENTAS )
------------------------------------------
****************************************************-------------------------------
-------------------
Muestre los EMPLEADOS que tienen una SALARIO menor al promedio, SU SALARIO, y la
diferencia con el promedio.
SELECT NOMBRE ,
(SELECT AVG(SALARIO) FROM EMPLEADO)-SALARIO AS DIFERENCIA
FROM EMPLEADO
WHERE SALARIO <
(SELECT AVG(SALARIO) FROM EMPLEADO);
------------------------------------------------------------
****************************-----------------------------------------------------
Obtenga todos los datos de los EMPLEADOS con EL SALARIO MAS ALTO
SELECT EMPLEADO.*
FROM EMPLEADO
WHERE SALARIO = (SELECT MAX(SALARIO) FROM EMPLEADO)
----------------------------------------
**********************************-------------------------------------------------
---------------------------
Necesitamos conocer los nombres de las REGIONES de aquellos clientes cuyo domicilio
es en calle "6 Saint Antoine", empleando subconsulta.
SELECT [Link] "CLIENTE", [Link] , [Link]
FROM CLIENTE C
WHERE DIRECCION = (SELECT DIRECCION FROM CLIENTE
WHERE DIRECCION = '6 Saint Antoine')
---------------------------------------------
*****************************************************------------------------------
-----------------------
Obtenga los nombre de LOS EMPLEADOS de los DEPARTAMENTOS cuyo NOMBRE no comienza
con una letra especfica (letra "G"),
select nombre
from EMPLEADO
where codigo NOT IN
(select [Link]
from DEPARTAMENTO D
where [Link] like 'A%');
-----------------------------------------------
*************************************************----------------------------------
------------------
Buscamos todos los deportes que se dictan el mismo da que un determinado deporte
(natacion) empleando subconsulta (1 registro)
select nombre
from deportes
where nombre<>'natacion' and
dia =
(select dia
from deportes
where nombre='natacion');
------------------------------------
********************************************---------------------------------------
----------------------
SELECT E.*
FROM EMPLEADO E
WHERE EXISTS(SELECT CODIGO_REP_VENTAS
FROM ORDEN O
WHERE O.CODIGO_REP_VENTAS = [Link]);
-----------------------------------------------------------------
**********************************-------------------------------------------------
---------
CREATE OR REPLACE FUNCTION FN_DEVOLVER_NOMBRE_EMPLEADOS(P_CODIGO_DEP
EMPLEADO.CODIGO_DEPT%TYPE)
RETURN VARCHAR2 IS
V_NOMBRE_DEPT [Link]%TYPE;
CURSOR C1 IS
SELECT [Link]
FROM DEPARTAMENTO D
WHERE CODIGO = P_CODIGO_DEP;
BEGIN
V_NOMBRE_DEPT:= NULL;
FOR R1 IN C1 LOOP
DBMS_OUTPUT.put_line([Link]);
V_NOMBRE_DEPT:=[Link];
END LOOP;
RETURN V_NOMBRE_DEPT;
END FN_DEVOLVER_NOMBRE_EMPLEADOS;
-----------------------------------------------
*********************************************--------------------------------------
---------
create or replace procedure INSERTAR_ACTUALIZAR
is
V_ESTDO EMPLDO_ORDEN01.ESTADO%TYPE;
V_RNGO1 EMPLDO_ORDEN01.RANGO%TYPE;
CURSOR C1 IS
SELECT [Link], [Link] EMPLEADO,FN_DEVOLVER_NOMBRE_EMPLEADOS,[Link]
FROM ORDEN O, EMPLEADO E, DEPARTAMENTO D
WHERE O.CODIGO_REP_VENTAS = [Link]
AND E.CODIGO_DEPT = [Link];
V_ESTDO := 'N';
begin
FOR R1 IN C1 LOOP
IF [Link]>1500 THEN
V_RNGO1:='ALTO';
ELSE
V_RNGO1:='BAJO';
END IF;
IF EXISTS(SELECT O.CODIGO_REP_VENTAS FROM ORDEN O) THEN
INSERT INTO
EMPLDO_ORDEN02(CDGO_EMPLDO,NMBRE_EMPLDO,NMBRE_DPRTMNTO,SALARIO,RANGO,ESTADO)
VALUES([Link],[Link],[Link],[Link],V_RANGO,V_ESTADO);
DELETE * FROM EMPLDO_ORDEN01 WHERE CDGO_EMPLDO = CDGO_EMPLDO;
UPDATE EMPLDO_ORDEN02 SET ESTADO='S' WHERE ESTADO='N' ;
end INSERTAR_ACTUALIZAR;
-------------------------------------------------
*******************************************************____________________________
_________________create or replace procedure PR_INSERTAR_ACTUALIZAR
is
V_ESTDO EMPLDO_ORDEN01.ESTADO%TYPE;
V_RNGO1 EMPLDO_ORDEN01.RANGO%TYPE;
CURSOR C1 IS
SELECT [Link] , [Link] EMPLEADO ,v_NOMBRE_DEPARTAMENTO , [Link]
FROM ORDEN O, EMPLEADO E
WHERE O.CODIGO_REP_VENTAS = [Link]
AND E.CODIGO_DEPT = [Link];
begin
v_NOMBRE_DEPARTAMENTO := FN_DEVOLVER_NOMBRE_EMPLEADOS(P_CODIGO_DEP);
V_ESTDO := 'N';
V_RANGO := NULL ;
V_SALARIO := 0 ;
FOR R1 IN C1 LOOP
IF R1.:V_NOMBRE_DEPARTAMENTO THEN
END IF;
v_NOMBRE_DEPARTAMENTO := NULL
INSERT INTO
EMPLDO_ORDEN01(CDGO_EMPLDO,NMBRE_EMPLDO,NMBRE_DPRTMNTO,SALARIO,RANGO,ESTADO)
VALUES([Link],[Link],R1.:V_NOMBRE_DEPARTAMENTO,[Link],V_RANGO,V_ESTADO)
;
DBMS_OUTPUT.put_line('DATOS INSERTADOS CORRECTAMENTE');
ELSE
UPDATE EMPLDO_ORDEN01
SET(CDGO_EMPLDO,NMBRE_EMPLDO,NMBRE_DPRTMNTO,SALARIO,RANGO,ESTADO) ;
DBMS_OUTPUT.put_line('DATOS ACTUALIZADOS CORRECTAMENTE');
end PR_INSERTAR_ACTUALIZAR;