Procedimientos Oracle
Enviado por walterin022 • 21 de Octubre de 2018 • Práctica o problema • 1.079 Palabras (5 Páginas) • 80 Visitas
CREATE OR REPLACE PROCEDURE LECTURA
IS
CURSOR TABLA_VIRTUAL IS
SELECT * FROM ESTUDIANTE;
ARREGLO TABLA_VIRTUAL%ROWTYPE;
BEGIN
OPEN TABLA_VIRTUAL;
FETCH TABLA_VIRTUAL INTO ARREGLO;
WHILE TABLA_VIRTUAL%FOUND
LOOP
DBMS_OUTPUT.PUT_LINE('NOMBRE:' || ARREGLO.NOMBRE ||' APELLIDO: ' || ARREGLO.APELLIDO);
FETCH TABLA_VIRTUAL INTO ARREGLO;
END LOOP;
CLOSE TABLA_VIRTUAL;
END;
CREATE OR REPLACE PROCEDURE CURSOR_FORLOOP
IS
CURSOR CR_LOOP
IS
SELECT * FROM CURSO;
V_RECEPTORA CR_LOOP%ROWTYPE;
BEGIN
FOR V_RECEPTORA IN CR_LOOP
LOOP
DBMS_OUTPUT.PUT_LINE(CR_LOOP%ROWCOUNT || '' || V_RECEPTORA.NOMBRE_CURSO);
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE PARAMETROS (V_AP IN VARCHAR)
AS
CURSOR CR_PARAMETRO(V_APELLIDO IN VARCHAR2)
IS
SELECT *
FROM ESTUDIANTE
WHERE APELLIDO=V_APELLIDO;
V_RECEPTORA CR_PARAMETRO%ROWTYPE;
BEGIN
FOR V_RECEPTORA IN CR_PARAMETRO(V_AP)
LOOP
DBMS_OUTPUT.PUT_LINE(V_RECEPTORA.NOMBRE);
END LOOP;
END;
/
SELECT CURSO.NUMERO_CURSO,NOMBRE_CURSO,CREDITOS
FROM CURSO,INSCRIPCION
WHERE CURSO.NUMERO_CURSO=INSCRIPCION.NUMERO_CURSO
AND INSCRIPCION.ID_ESTUDIANTE=V_ID;
SELECT NOMBRE, APELLIDO
FROM ESTUDIANTE
WHERE ESTUDIANTE.ID_ESTUDIANTE=V_ID;
_________________________________________________________________________________________________________
CREATE OR REPLACE PROCEDURE PARAMETROOS (V_ID IN VARCHAR)
AS
CURSOR CR_PARAMETRO(V_ID IN VARCHAR2)
IS
SELECT CURSO.NUMERO_CURSO,CURSO.NOMBRE_CURSO,CREDITOS
FROM CURSO,INSCRIPCION
WHERE CURSO.NUMERO_CURSO=INSCRIPCION.NUMERO_CURSO
AND INSCRIPCION.ID_ESTUDIANTE=V_ID;
V_RECEPTORA CR_PARAMETRO%ROWTYPE;
nom ESTUDIANTE.NOMBRE%type;
ape ESTUDIANTE.APELLIDO%type;
BEGIN
SELECT NOMBRE, APELLIDO INTO nom, ape
FROM ESTUDIANTE
WHERE ESTUDIANTE.ID_ESTUDIANTE=V_ID;
FOR V_RECEPTORA IN CR_PARAMETRO(V_ID)
LOOP
DBMS_OUTPUT.PUT_LINE('EL ALUMNO: ' || nom ||' ' || ape || ' ESTA INSCRITO EN LOS SIGUIENTES CURSOS: ' || V_RECEPTORA.NUMERO_CURSO ||' ' || V_RECEPTORA.NOMBRE_CURSO || V_RECEPTORA.CREDITOS);
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE PARAMETROOS (V_ID IN VARCHAR)
AS
CURSOR CR_PARAMETRO(V_ID IN VARCHAR2)
IS
SELECT CURSO.NUMERO_CURSO,CURSO.NOMBRE_CURSO,CREDITOS
FROM CURSO,INSCRIPCION
WHERE CURSO.NUMERO_CURSO=INSCRIPCION.NUMERO_CURSO
AND INSCRIPCION.ID_ESTUDIANTE=V_ID;
V_RECEPTORA CR_PARAMETRO%ROWTYPE;
nom ESTUDIANTE.NOMBRE%type;
ape ESTUDIANTE.APELLIDO%type;
BEGIN
SELECT NOMBRE, APELLIDO INTO nom, ape
FROM ESTUDIANTE
WHERE ESTUDIANTE.ID_ESTUDIANTE=V_ID;
DBMS_OUTPUT.PUT_LINE('EL ALUMNO: ' || nom ||' ' || ape );
DBMS_OUTPUT.PUT_LINE(' ESTA INSCRITO EN LOS SIGUIENTES CURSOS: ');
FOR V_RECEPTORA IN CR_PARAMETRO(V_ID)
LOOP
DBMS_OUTPUT.PUT_LINE(V_RECEPTORA.NUMERO_CURSO ||' ' || V_RECEPTORA.NOMBRE_CURSO || V_RECEPTORA.CREDITOS);
END LOOP;
END;
/
______________________________________________________________________________________________________________________________________
TRIGGERS
CREATE TABLE CLIENTES( CODIGO VARCHAR(2),NOMBE VARCHAR(15), LIMITE NUMBER (8,2));
CREATE OR REPLACE TRIGGER INSERCION
AFTER INSERT
ON CLIENTES
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('CLIENTE ADICIONADO');
END;
CREATE TABLE AUDITOR( REGISLONG VARCHAR(40));
CREATE OR REPLACE TRIGGER AUDITAR_CLIENTES
AFTER UPDATE
ON CLIENTES
FOR EACH ROW
BEGIN
INSERT INTO AUDITOR
VALUES('ANTERIOR' ||:OLD.LIMITE|| ' NUEVO' || :NEW.LIMITE);
END;
ALTER TABLE CLIENTES ADD FOREIGN KEY(ESTADO) REFERENCES ESTADOS(CODIGO);
CREATE OR REPLACE VIEW CLIENTES_ESTADOS
AS
SELECT CODIGO, NOMBRE, LIMITE, NOMBRE_E
FROM CLIENTES, ESTADOS
WHERE
CLIENTES.ESTADO=ESTADOS.CODIGO_E;
/
ALTER TABLE ESTADOS RENAME COLUMN CODIGO TO CODIGO_E;
__________________________________________________________________________________________________________________________________________
SQL> CREATE TABLE ARTICULOS (
2 CODIGO VARCHAR(5) PRIMARY KEY,DESCRIPCION VARCHAR (30),PRECIO NUMBER(5,2), CODIGO_ALMACEN VARCHAR(6));
Table created.
SQL> CREATE TABLE ARTICULOS_MAYOR(
2 CODIGO VARCHAR(5) PRIMARY KEY,DESCRIPCION VARCHAR (30),PRECIO NUMBER(5,2), CODIGO_ALMACEN VARCHAR(6));
Table created.
SQL> CREATE TABLE ARTICULOS_MENOR(
2 CODIGO VARCHAR(5) PRIMARY KEY,DESCRIPCION VARCHAR (30),PRECIO NUMBER(5,2), CODIGO_ALMACEN VARCHAR(6));
SQL> CREATE TABLE ALMACENES(
2 CODIGO_ALMACENES VARCHAR (6) PRIMARY KEY,
3 NOMBRE_ALMACENES VARCHAR (30));
Table created.
SQL> ALTER TABLE ARTICULOS ADD FOREIGN KEY(CODIGO_ALMACEN) REFERENCES ALMACENES(CODIGO_ALMACENES);
Table altered.
insert into articulos values ('00001','DESODORANTE EN AEROSOL', 40.00, 100001);
insert into articulos values ('00002','AGUA CIEL 600ml', 10.00, 100001);
insert into articulos values ('00003','PAPAS FRITAS', 11.00, 100001);
insert into ALMACENES values (100001,'PRODUCTO TERMINADO');
PROCEDIMIENTO PARA TABLAS MENOR Y MAYOR
_____________________________________________________________________________________________________________________________________________
CREATE OR REPLACE PROCEDURE
...