CREATE TABLE CLIENTE(
ID_CLIENTE NUMBER,
ID_CUENTA NUMBER,
NUM_CUENTA NUMBER,
NOMBRE VARCHAR2 (30),
APELLIDO_P VARCHAR2 (30),
APELLIDO_M VARCHAR2 (30),
FECHA_NACIMIENTO DATE,
TEL_CASA VARCHAR2 (10),
TEL_CEL VARCHAR2(10),
CORREO VARCHAR2 (25),
CALLE VARCHAR2 (30),
NUM_INTERIOR VARCHAR2 (10),
NUM_EXTERIOR VARCHAR2 (10),
CP VARCHAR2 (10),
MUNICIPIO VARCHAR2 (15),
ESTADO VARCHAR2 (20),
SALDO FLOAT,
LIMITE_CREDITO NUMBER);
INSERT INTO CLIENTE VALUES (1,25,98785,'YATIZIRI','RESENDIZ','BECERRIL','14-10-
1997','21640580','5519869236','
[email protected]','1RA
CERRADA','8','30','58741','ATIZAPAN','MEXICO',500.00,2000);
INSERT INTO CLIENTE VALUES (2,26,25974,'FANNY','BELLO','SOLANO','23-03-
1998','26495100','5591242623','
[email protected]','ALCANFORES','2A','EDIF
2A','54467','NICOLAS','MEXICO',1000.00,2000);
INSERT INTO CLIENTE VALUES (3,27,29874,'JORGE','ACOSTA','GUZMAN','18-10-
1998','9874563','5567570457','
[email protected]','ABETO','254','983','9874','NICOLAS
','MEXICO',1500.00,2000);
INSERT INTO CLIENTE VALUES (4,28,36471,'BRYAN','MENDOZA','MARTINEZ','24-03-
1996','9874163','566128644','
[email protected]','DEL
RIO','S/N','S/N','54400','NICOLAS','MEXICO',2000.00,2000);
CREATE TABLE CUENTA(
ID_CUENTA NUMBER,
ID_CLIENTE NUMBER,
NUM_CUENTA NUMBER);
INSERT INTO CUENTA VALUES(1,875,987457);
INSERT INTO CUENTA VALUES(2,369,748968);
INSERT INTO CUENTA VALUES(3,987,369743);
INSERT INTO CUENTA VALUES(4,1036,369871);
INSERT INTO CUENTA VALUES(5,3698,98756);
CREATE TABLE OPERACIONES(
ID_OPERACIONES NUMBER,
ID_SUCURSAL NUMBER,
ID_CUENTA NUMBER,
FECHA_OPERACION DATE,
TIPO_OPERACION VARCHAR2 (20),
CARGO FLOAT);
INSERT INTO OPERACIONES VALUES (1,274,984,'02-11-2019','EN LINEA','500.00');
INSERT INTO OPERACIONES VALUES (2,369,874,'03-10-2019','CAJERO','1500.00');
INSERT INTO OPERACIONES VALUES (3,748,3698,'23-03-2019','CAJAS','2000.00');
INSERT INTO OPERACIONES VALUES (4,956,4598,'24-07-2019','EN LINEA','5000.00');
INSERT INTO OPERACIONES VALUES (5,698,3874,'22-04-2019','EN LINEA','8000.00');
CREATE TABLE SUCURSALES(
ID_SUCURSAL NUMBER,
COD_SUCURSAL NUMBER,
TELEFONO VARCHAR2 (15),
EMAIL VARCHAR2 (30),
MUNICIPIO VARCHAR2 (10),
LOCALIDAD VARCHAR2 (15),
ZONA VARCHAR2 (15),
COLONIA VARCHAR2 (15),
CALLE VARCHAR2 (15),
CP VARCHAR2 (15),
NUM_INTERIOR VARCHAR2 (10),
NUM_EXTERIOR VARCHAR2 (10));
INSERT INTO SUCURSALES VALUES
(1,258,'258748','
[email protected]','ATIZAPAN','HIGUERA','ZONA1','HIGUERA','BUGAN
BILIAS','8745','8','97')
INSERT INTO SUCURSALES VALUES
(2,259,'214785','
[email protected]','NICOLAS','COLMENA','ZONA2','LA
COLMENA','ALCANFORES','54467','257','98');
INSERT INTO SUCURSALES VALUES
(3,260,'26495100','
[email protected]','AZCAPO','PASTORES','ZONA3','PASTORES','P
INO','987','274','01');
INSERT INTO SUCURSALES VALUES
(4,261,'24783','
[email protected]','CUAUTITLAN','CERRADA 1','ZONA4','CERRADA
1','SAUCES','974','98','23');
INSERT INTO SUCURSALES VALUES
(5,262,'36984','
[email protected]','ATIZAPN','MEXICO','ZONA5','JUAN ANGULO','BAJA
CALIFORNIA','9874','3','39');
___________________________________________________________________________________
_____________________________________________________________________________
CURSORES SIMPLES
SET SERVEROUTPUT ON;
DECLARE
CURSOR SUC1 IS
SELECT TELEFONO, EMAIL FROM SUCURSALES
ORDER BY EMAIL;
VTELEFONO VARCHAR2 (15);
VEMAIL VARCHAR2 (30);
BEGIN
OPEN SUC1;
LOOP
FETCH SUC1 INTO VTELEFONO, VEMAIL;
EXIT WHEN SUC1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(VTELEFONO||'*'||VEMAIL);
END LOOP;
CLOSE SUC1;
END;
/
SET SERVEROUTPUT ON;
DECLARE
CURSOR OPE2 IS
SELECT FECHA_OPERACION,TIPO_OPERACION,CARGO FROM OPERACIONES;
VFECHA_OPERACION DATE;
VTIPO_OPERACION VARCHAR2 (20);
VCARGO FLOAT;
BEGIN
OPEN OPE2;
LOOP
FETCH OPE2 INTO VFECHA_OPERACION,VTIPO_OPERACION,VCARGO;
EXIT WHEN OPE2%NOTFOUND;
DBMS_OUTPUT.PUT_LINE (VFECHA_OPERACION||'*'||VTIPO_OPERACION||'*'||VCARGO);
END LOOP;
CLOSE OPE2;
END;
/
___________________________________________________
CURSORES CON PARAMETROS
SET SERVEROUTPUT ON;
DECLARE
CURSOR CL1 IS SELECT * FROM CLIENTE WHERE ID_CLIENTE=1;
CLIENTE CL1%ROWTYPE;
BEGIN
OPEN CL1;
LOOP
FETCH CL1 INTO CLIENTE;
EXIT WHEN CL1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE (CLIENTE.NOMBRE);
END LOOP;
CLOSE CL1;
END;
/
SET SERVEROUTPUT ON;
DECLARE
CURSOR SUC IS SELECT * FROM SUCURSALES WHERE ID_SUCURSAL=4;
SUCURSALES SUC%ROWTYPE;
BEGIN
OPEN SUC;
LOOP
FETCH SUC INTO SUCURSALES;
EXIT WHEN SUC%NOTFOUND;
DBMS_OUTPUT.PUT_LINE (SUCURSALES.ID_SUCURSAL);
END LOOP;
CLOSE SUC;
END;
/
___________________________________________________________________________________
____________________________________________________________________________
TRIGGERS
CREATE OR REPLACE TRIGGER CUENTA
BEFORE INSERT OR UPDATE OR DELETE
ON CUENTA
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO CUENTA VALUES(
ID_CUENTA,
ID_CLIENTE,
NUM_CUENTA,
:NEW.ID_CUENTA,
:NEW.ID_CLIENTE,
:NEW.NUM_CUENTA);
END IF;
IF UPDATING THEN
INSERT INTO CUENTA VALUES
(ID_CUENTA,
ID_CLIENTE,
NUM_CUENTA,
:OLD.ID_CUENTA,
:OLD.ID_CLIENTE,
:OLD.NUM_CUENTA);
END IF;
IF DELETING THEN
INSERT INTO CUENTA VALUES
(ID_CUENTA,
ID_CLIENTE,
NUM_CUENTA,
:OLD.ID_CUENTA,
:OLD.ID_CLIENTE,
:OLD.NUM_CUENTA);
END IF;
END;
/
INSERT INTO CUENTA VALUES(6,2647,321574);
CREATE OR REPLACE TRIGGER CLIENTE
BEFORE UPDATE
ON CLIENTE
FOR EACH ROW
BEGIN
IF UPDATING('NOMBRE') THEN
INSERT INTO CLIENTE ('NOMBRE')
VALUES ('NUEVO NOMBRE' ||:NEW.NOMBRE||'VIEJO NOMBRE'
||:OLD.NOMBRE||'FECHA_NACIMIENTO'||SYSDATE);
END IF;
END;
/
update CLIENTE set nombre = 'SAMANTHA' where ID_CLIENTE=2;
CREATE OR REPLACE TRIGGER DIS1
BEFORE UPDATE
ON CUENTA
FOR EACH ROW
BEGIN
IF UPDATING('CARGO') THEN
INSERT INTO DIS1
___________________________________________________________________________________
_____________________________________________________________________________
PROCEDIMIENTOS
Crear un procedimiento que visualice el nombre y la fecha de nacimiento de algunos
clientes.
SET SERVEROUTPUT ON;
DECLARE CURSOR FALTAEM
IS
SELECT NOMBRE,FECHA_NACIMIENTO FROM CLIENTE;
ALTAS FALTAEM % ROWTYPE;
BEGIN
IF (NOT FALTAEM % ISOPEN) THEN
OPEN FALTAEM;
END IF;
FETCH FALTAEM INTO ALTAS;
WHILE (FALTAEM % FOUND) LOOP
DBMS_OUTPUT.PUT_LINE(ALTAS.NOMBRE||'*'||ALTAS.FECHA_NACIMIENTO);
FETCH FALTAEM INTO ALTAS;
END LOOP;
IF (FALTAEM % ISOPEN) THEN
CLOSE FALTAEM;
END IF;
END;
/
SET SERVEROUTPUT ON;
DECLARE CURSOR FALTAEM
IS
SELECT ID_OPERACIONES, FECHA_OPERACION, TIPO_OPERACION ,CARGO FROM OPERACIONES;
ALTAS FALTAEM % ROWTYPE;
BEGIN
IF (NOT FALTAEM % ISOPEN) THEN
OPEN FALTAEM ;
END IF;
FETCH FALTAEM INTO ALTAS;
WHILE (FALTAEM % FOUND) LOOP
DBMS_OUTPUT.PUT_LINE(ALTAS.ID_OPERACIONES||'*'||ALTAS.FECHA_OPERACION||'*'||
ALTAS.TIPO_OPERACION||'*'||ALTAS.CARGO);
FETCH FALTAEM INTO ALTAS;
END LOOP;
IF (FALTAEM % ISOPEN) THEN
CLOSE FALTAEM;
END IF;
END;
/
SET SERVEROUTPUT ON;
CREATE PROCEDURE PA_CLIENTE_NOMBRE
NOMBRE VARCHAR2 (30)
AS
SELECT NOMBRE,APELLIDO_P,APELLIDO_M
FROM CLIENTE
WHERE NOMBRE= NOMBRE;
____________________________________________________}