Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SET SERVEROUTPUT ON;
- ---------------
- --CREATE USER--
- ---------------
- CREATE USER admin
- IDENTIFIED BY admin
- QUOTA 5000k ON users
- DEFAULT TABLESPACE users
- TEMPORARY TABLESPACE temp
- ACCOUNT UNLOCK;
- CREATE ROLE role_admin;
- GRANT CREATE SESSION, CREATE TABLE, CREATE TRIGGER, CREATE SEQUENCE, CREATE PROCEDURE TO role_admin;
- GRANT role_admin TO admin;
- ----------------
- --CREATE TABLE--
- ----------------
- CREATE TABLE producto(
- id CHAR(4),
- nombre VARCHAR(20),
- precio NUMBER(6),
- CONSTRAINT producto_pk PRIMARY KEY(id)
- );
- CREATE TABLE boleta(
- codigo NUMBER,
- fecha DATE,
- producto_id CHAR(4),
- cantidad NUMBER(3),
- total NUMBER,
- CONSTRAINT boleta_pk PRIMARY KEY (codigo),
- CONSTRAINT boleta_producto_fk FOREIGN KEY (producto_id) REFERENCES producto(id)
- );
- ------------------
- --CREAR SEQUENCE--
- ------------------
- CREATE SEQUENCE seq_boleta
- START WITH 50
- INCREMENT BY -50
- MAXVALUE 50
- NOMINVALUE
- NOCYCLE
- NOCACHE;
- -----------------------------------------
- --CREAR PROCEDURE PARA INGRESA PRODUCTO--
- -----------------------------------------
- CREATE OR REPLACE PROCEDURE sp_ingresa_producto
- (nId IN CHAR, nNombre IN VARCHAR, nPrecio IN NUMBER)
- IS
- BEGIN
- INSERT INTO producto VALUES (nId, nNombre, nPrecio);
- END;
- /
- EXECUTE sp_ingresa_producto('000', 'Lapiz Bic', 250);
- EXECUTE sp_ingresa_producto(&Id, &Nombre, &Precio);
- SELECT * from producto;
- ----------------------------------------
- --CREATE PROCEDURE PARA INGRESA BOLETA--
- ----------------------------------------
- CREATE OR REPLACE PROCEDURE sp_ingresa_boleta
- (nCantidad IN NUMBER, nProducto IN CHAR)
- IS
- bol_codigo NUMBER;
- bol_fechita DATE;
- bol_precio NUMBER;
- bol_total NUMBER;
- BEGIN
- SELECT seq_boleta.nextval INTO bol_codigo FROM DUAL;
- SELECT SYSDATE INTO bol_fechita FROM dual;
- SELECT precio INTO bol_precio FROM producto WHERE id = nProducto;
- bol_total := bol_precio * nCantidad;
- INSERT INTO boleta VALUES (bol_codigo, bol_fechita, nProducto, nCantidad, bol_total);
- END;
- /
- EXECUTE sp_ingresa_boleta (10, '001');
- SELECT * FROM boleta;
- ----------------------------------------------------------------
- --CREATE PROCEDURE PARA INGRESA BOLETA CON VALIDACION CONTADOR--
- ----------------------------------------------------------------
- CREATE OR REPLACE PROCEDURE sp_ingresa_boleta_validacion
- (nCantidad IN NUMBER, nProducto IN CHAR)
- IS
- contador NUMBER;
- bol_codigo NUMBER;
- bol_fechita DATE;
- bol_precio NUMBER;
- bol_total NUMBER;
- BEGIN
- SELECT COUNT(*) INTO contador FROM producto WHERE id = nProducto;
- IF (contador = 0) THEN
- dbms_output.put_line('El producto '|| nProducto || ' no existe.');
- ELSE
- SELECT seq_boleta.nextval INTO bol_codigo FROM DUAL;
- SELECT SYSDATE INTO bol_fechita FROM dual;
- SELECT precio INTO bol_precio FROM producto WHERE id = nProducto;
- bol_total := bol_precio * nCantidad;
- INSERT INTO boleta VALUES (bol_codigo, bol_fechita, nProducto, nCantidad, bol_total);
- END IF;
- END;
- /
- EXECUTE sp_ingresa_boleta_validacion (10,'005');
- ----------------------------------------------------------------------------
- --CREATE PROCEDURE PARA INGRESA BOLETA CON VALIDACION EXCEPCIONES Y CURSOR--
- ---------------------------------------------------------------------------
- CREATE OR REPLACE PROCEDURE sp_ingresa_boleta_excepcion
- (nCantidad IN NUMBER, nProducto IN CHAR)
- IS
- bol_codigo NUMBER;
- bol_fechita DATE;
- bol_precio NUMBER;
- bol_total NUMBER;
- CURSOR lista_boleta IS SELECT * FROM boleta;
- fila_boleta boleta%ROWTYPE;
- BEGIN
- SELECT seq_boleta.nextval INTO bol_codigo FROM DUAL;
- SELECT SYSDATE INTO bol_fechita FROM dual;
- SELECT precio INTO bol_precio FROM producto WHERE id = nProducto;
- bol_total := bol_precio * nCantidad;
- INSERT INTO boleta VALUES (bol_codigo, bol_fechita, nProducto, nCantidad, bol_total);
- OPEN lista_boleta;
- dbms_output.put_line(RPAD('CODIGO',10,' ') ||' '|| RPAD('FECHA',10, ' ')||' '|| RPAD('ID DE PRODUCTO', 10, ' ') ||' '|| RPAD('CANTIDAD', 10, ' ') ||' '|| RPAD('TOTAL', 10, ' '));
- dbms_output.put_line(RPAD('=',10, '=') ||' '|| RPAD('=',10, '=') ||' '|| RPAD('=',10, '=') ||' '|| RPAD('=',10, '=') ||' '|| RPAD('=',10, '='));
- LOOP
- FETCH lista_boleta INTO fila_boleta;
- EXIT WHEN lista_boleta%notfound;
- dbms_output.put_line (RPAD(fila_boleta.codigo, 10, ' ') ||' '|| RPAD(fila_boleta.fecha,10, ' ') ||' '|| RPAD(fila_boleta.producto_id, 10, ' ') ||' '|| RPAD(fila_boleta.cantidad, 10, ' ') ||' '|| RPAD(TO_CHAR(fila_boleta.total,10, ' '), '$99g999d'));
- END LOOP;
- EXCEPTION
- WHEN no_data_found THEN
- dbms_output.put_line('El producto '|| nProducto || ' no existe.');
- END;
- /
- EXECUTE sp_ingresa_boleta_excepcion (10, '001');
- desc boleta;
- SELECT * FROM boleta;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement