Академический Документы
Профессиональный Документы
Культура Документы
(SERVICE_NAME = orcl)
)
);
SELECT * FROM TAB@SITIO2;
CREATE TABLE CLIENTES
(CEDULA VARCHAR (10) PRIMARY KEY,
NOMBRE CHAR (40));
CREATE SNAPSHOT LOG ON CLIENTES;
COLUMN OBJECT_NAME FORMAT A20;
COLUMN OBJECT_NAME FORMAT A20;
SELECT OBJECT_NAME, OBJECT_TYPE
FROM USER_OBJECTS;
SITIO SRV2 (SITIO 2).
CREATE DATABASE LINK SITIO1
CONNECT TO USUARIOX IDENTIFIED BY USUARIOX
USING
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SITIO1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
);
CREATE SNAPSHOT S_CLIENTES
REFRESH FAST
START WITH SYSDATE
NEXT SYSDATE + 0.0001
WITH PRIMARY KEY
AS
SELECT *
FROM CLIENTES@SITIO1;
SELECT * FROM S_CLIENTES;
INSERT INTO S_CLIENTES VALUES (1700003238,PAUL FUERTES); No se
puede ingresar datos en una vista materializada.
.
/
INSERT INTO V_PRODUCTOS VALUES
(S, 1, XX,YY,DESCRI, 20);
INSERT INTO V_PRODUCTOS VALUES
(N, 1, XX,YY,DESCRI, 10);
USUARIOS
Gerente
Contador
Bodeguero
Vendedores
PERFIL: GERENTE
SUCURSALES
CLIENTES
PRODUCTOS
FACTURAS
VENTAS
CONSULTAR
X
X
X
X
X
PERFIL: CONTADOR
SUCURSALES
CLIENTES
PRODUCTOS
FACTURAS
VENTAS
X
X
X
X
X
PERFIL:BODEGUEROS
SUCURSALES
CLIENTES
PRODUCTOS
FACTURAS
VENTAS
X
X
X
X
X
PERFIL:VENDEDORES
SUCURSALES
CLIENTES
PRODUCTOS
FACTURAS
VENTAS
X
X
X
X
X
INSERTAR
X
ACTUALIZAR
X
X
X
X
X
DEMANDAS TIPO:
GERENTE:
1.- Total vendido por sucursal en una fecha dada.
SELECT SUM (VALOR) AS VENTAS, NOMBRE
FROM FACTURAS F, SUCURSALES S
OPEN C1;
FETCH C1 INTO X;
IF X <> 0 THEN
UPDATE F2_PRODUCTOS
SET STOCK = :F2_PRODUCTOS.STOCK
WHERE CODIGOP = :F2_PRODUCTOS.CODIGOP;
COMMIT;
MESSAGE ('STOCK ACTUALIZADO');
ELSE
RAISE NO_HAY;
END IF;
END IF;
EXCEPTION
WHEN NO_HAY THEN
RAISE FORM_TRIGGER_FAILURE;
END;
BOTON OTRO:
BEGIN
GO_BLOCK ('F2_PRODUCTOS');
GO_ITEM ('F2_PRODUCTOS.CODIGOP');
:F2_PRODUCTOS.CODIGOP := '';
:F2_PRODUCTOS.DESCRIPCION := '';
:F2_PRODUCTOS.STOCK := '';
END;
BOTON SALIR:
BEGIN
CLOSE_FORM('MODULE1');
END;
ITEM CODIGOP WHEN_VALIDATE_ITEM:
DECLARE
NO_HAY EXCEPTION;
X NUMBER;
BEGIN
SELECT COUNT(*)INTO X
FROM F2_PRODUCTOS
WHERE CODIGOP = :F2_PRODUCTOS.CODIGOP;
IF X <> 0 THEN
SELECT DESCRIPCION, STOCK INTO
:F2_PRODUCTOS.DESCRIPCION, :F2_PRODUCTOS.STOCK
FROM F2_PRODUCTOS
WHERE CODIGOP = :F2_PRODUCTOS.CODIGOP;
ELSE
MESSAGE ('NO HAY ESTE PRODUCTO');
GO_BLOCK ('BOTONES');
END IF;
EXCEPTION
WHEN NO_HAY THEN
GO_BLOCK ('BOTONES');
WHEN OTHERS THEN
RAISE FORM_TRIGGER_FAILURE;
GO_BLOCK ('BOTONES');
END;
VENDEDORES.
FORMULARIO PARA INGRESO DE FACTURAS Y VENTAS
-- FACTURAS WHEN-NEW-BLOCK-INSTANCE
BEGIN
SELECT SYSDATE INTO :FACTURAS.FECHA
FROM DUAL;
END;
/* POST-TEXT-ITEM EN VENTAS.PRODUCTO */
DECLARE
K INTEGER;
CURSOR C1 IS
SELECT 1
FROM F2_PRODUCTOS
WHERE CODIGOP =
:VENTAS.PRODUCTO;
NOEXISTE EXCEPTION;
BEGIN
OPEN C1;
FETCH C1 INTO K;
IF K IS NOT NULL THEN
SELECT DESCRIPCION INTO :VENTAS.DESCRIPCION
FROM F2_PRODUCTOS
WHERE CODIGOP =
:VENTAS.PRODUCTO;
:GLOBAL.SI := 'S';
ELSE
-MESSAGE ('DEBE INGRESAR UN CODIGO');
:GLOBAL.SI := '';
END IF;
CLOSE C1;
IF :GLOBAL.SI IS NULL
AND :VENTAS.PRODUCTO IS NOT NULL THEN
:VENTAS.PRODUCTO := '';
RAISE NOEXISTE;
END IF;
EXCEPTION
WHEN NOEXISTE THEN
MESSAGE ('ESTE PRODUCTO NO EXISTE, VERIFIQUE');
RAISE FORM_TRIGGER_FAILURE;
END;
(
NUMERO,
FECHA
,
VALOR
,
CLIENTE
,
SUCURSAL
,
CANTIDAD
,
PRECIO
,
PRODUCTO)
VALUES
(
NCOMPROB,
:FACTURAS.FECHA ,
:FACTURAS.VALOR ,
:FACTURAS.CLIENTE ,
RTRIM(:FACTURAS.SUCURSAL) ,
:VENTAS.CANTIDAD ,
:VENTAS.PRECIO ,
:VENTAS.PRODUCTO );
NEXT_RECORD;
MORDINAL := MORDINAL + 1;
END LOOP;
COMMIT;
ELSE
-MESSAGE ('OTROS ERRORES, VERIFIQUE');
RAISE FORM_TRIGGER_FAILURE;
END IF;
EXCEPTION
WHEN SINNUMERO THEN
MESSAGE ('FALTA NUMERO DE COMPROBANTE');
GO_BLOCK ('FACTURAS');
GO_ITEM ('FACTURAS.NUMERO');
RAISE FORM_TRIGGER_FAILURE;
WHEN FALTANDATOS THEN
MESSAGE ('FALTAN DATOS');
GO_BLOCK ('VENTAS');
GO_ITEM ('VENTAS.PRODUCTO');
RAISE FORM_TRIGGER_FAILURE;
WHEN OTHERS THEN
MESSAGE ('HAY ERRORES');
RAISE FORM_TRIGGER_FAILURE;
END;
-- BOTON SALIR WHEN-BUTTON-PRESED
EXIT_FORM;
SPTIMA PARTE.
REPLICACION BIDIRECCIONAL.
SITIO SRV1 (SITIO 1).
CREATE TABLE PROMOCIONES
(CODIGOP NUMBER PRIMARY KEY,
DESCRIPCION CHAR (40),
STOCK NUMBER (10, 2),
FECHAINICIAL DATE,
FECHAFINAL DATE);
SITIO SRV2 (SITIO 2).
CREATE TABLE PROMOCIONES
(CODIGOP NUMBER PRIMARY KEY,
DESCRIPCION CHAR (40),
STOCK NUMBER (10, 2),
FECHAINICIAL DATE,
FECHAFINAL DATE);
SITIO SRV1 (SITIO 1).
CREATE OR REPLACE TRIGGER T_PROMOCIONES
AFTER INSERT ON PROMOCIONES
FOR EACH ROW
DECLARE
CURSOR C1 IS
SELECT 1 FROM PROMOCIONES@SITIO2
WHERE CODIGOP = :NEW.CODIGOP;
X C1%ROWTYPE;
BEGIN
OPEN C1;
FETCH C1 INTO X;
IF C1%NOTFOUND THEN
INSERT INTO PROMOCIONES@SITIO2
VALUES
(:NEW.CODIGOP, :NEW.DESCRIPCION, :NEW.STOCK,
:NEW.FECHAINICIAL, :NEW.FECHAFINAL);
CLOSE C1;
END IF;
END;
.
/
INSERT INTO PROMOCIONES VALUES
(1, DESCRI,27,SYSDATE + 10, SYSDATE +20);