Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE PACKAGE UTILITARIOS IS
- FUNCTION EXTRAER(pCADENA VARCHAR2) RETURN VARCHAR2;
- FUNCTION ACTUALIZAR(pCADENA VARCHAR2) RETURN VARCHAR2;
- PROCEDURE ADD_FACTURA(pCLIENTE NUMBER,pPRODUCTOS VARCHAR2,
- pCANTIDADES VARCHAR2,pPRECIOS VARCHAR2);
- END UTILITARIOS;
- CREATE OR REPLACE PACKAGE BODY UTILITARIOS IS
- FUNCTION EXTRAER(pCADENA VARCHAR2) RETURN VARCHAR2 IS
- BEGIN
- RETURN (SUBSTR(pCADENA,1,INSTR(pcadena,';')-1));
- END EXTRAER;
- FUNCTION ACTUALIZAR(pCADENA VARCHAR2) RETURN VARCHAR2 IS
- BEGIN
- RETURN SUBSTR(pCADENA,INSTR(pcadena,';')+1,LENGTH(pcadena));
- END ACTUALIZAR;
- END UTILITARIOS;
- CREATE OR REPLACE PROCEDURE ADD_FACTURA(pPRODUCTOS VARCHAR2
- ,pCANTIDADES VARCHAR2,pPRECIOS VARCHAR2)
- IS
- vPROD VARCHAR2(100):=pPRODUCTOS;
- vCANT VARCHAR2(100):=pCANTIDADES;
- vPREC VARCHAR2(100):=pPRECIOS;
- BANDERA BOOLEAN:=TRUE;
- vf NUMBER; vp NUMBER; vC NUMBER; vPr NUMBER(8,2);
- BEGIN
- SELECT SQ_FACTURA.CURRVAL INTO vf FROM DUAL;
- WHILE(BANDERA=TRUE) LOOP
- vp:=TO_NUMBER(extraer(vprod));
- vprod:=actualizar(vprod);
- vc:=TO_NUMBER(extraer(vcant));
- vcant:=actualizar(vcant);
- vpr:=TO_NUMBER(extraer(vprec));
- vprec:=actualizar(vprec);
- INSERT INTO DETALLE(f,p,c,pr)VALUES(vf,vp,vc,
- vpr);
- IF LENGTH(vprod)=0 THEN
- bandera:=FALSE;
- END IF;
- END LOOP;
- END ADD_FACTURA;
- CREATE SEQUENCE SQ_FACTURA START WITH 1 INCREMENT BY 1;
- CREATE TRIGGER F_SECUENCIA BEFORE INSERT ON ENCABEZADO
- FOR EACH ROW
- BEGIN
- :NEW.F:=SQ_FACTURA.NEXTVAL;
- END;
- CREATE sequence autor_id increment BY 1 START WITH 1;
- CURRVAL
- CREATE OR REPLACE FUNCTION EXTRAER(pCADENA VARCHAR2) RETURN VARCHAR2 IS
- BEGIN
- RETURN (SUBSTR(pCADENA,1,INSTR(pcadena,';')-1));
- END;
- /
- PRODUCTOS = '15;8;3';
- cantidades = '5;125;4';
- Precios = '1.25;80;125';
- CALL ADD_FACTURA('15;8;3','5;125;4','1.25;80;125');
- CREATE OR REPLACE FUNCTION ACTUALIZAR(pCADENA VARCHAR2) RETURN VARCHAR2 IS
- BEGIN
- RETURN SUBSTR(pCADENA,INSTR(pcadena,';')+1,LENGTH(pcadena));
- END;
- VARIABLE ENTRADA : SOLO LECTURA
- VARIABLE SALIDA : VARIABLEL CON RETORNO, DE REFERENCIA
- encabezado
- f cl fecha
- 3 1 16/03/12
- detalle
- F P C Pr
- CREATE OR REPLACE TRIGGER ADD_BL_CATEGORIES ON BT_CATEGORIES
- AFTER INSERT OR UPDATE OR DELETE FOR EACH ROW
- (WHEN SYSDATE > '15/12/2011';
- BEGIN
- INSERT INTO BT_CATEGORIES(CATEGORYID,CATEGORYNAME,DESCRIPTION,
- USUARIO,FECHA,ACCION)VALUES(:OLD.CATEGORYID,:OLD.CATEGORYNAME,
- :OLD.DESCRIPTION, USER USERNAME, SYSDATE,'HISTORICO');
- END;
- /
- CREATE TABLE ENCABEZADO(
- F NUMBER CONSTRAINT PK_NUM_FACTURA PRIMARY KEY,
- CL NUMBER,
- FECHA DATE DEFAULT(SYSDATE));
- CREATE TABLE DETALLE(
- F NUMBER,
- P NUMBER,
- C NUMBER,
- PR NUMBER(8,2));
- /* Factura 1 insert masivo */
- CREATE OR REPLACE PROCEDURE ADD_FACTURA(pPRODUCTOS VARCHAR2
- ,pCANTIDADES VARCHAR2,pPRECIOS VARCHAR2)
- IS
- vPROD VARCHAR2(100):=pPRODUCTOS;
- vCANT VARCHAR2(100):=pCANTIDADES;
- vPREC VARCHAR2(100):=pPRECIOS;
- BANDERA BOOLEAN:=TRUE;
- vf NUMBER; vp NUMBER; vC NUMBER; vPr NUMBER(8,2);
- BEGIN
- SELECT SQ_FACTURA.CURRVAL INTO vf FROM DUAL;
- FOR i IN 1..LENGTH(vprod) LOOP
- vp:=TO_NUMBER(extraer(vprod));
- vprod:=actualizar(vprod);
- vc:=TO_NUMBER(extraer(vcant));
- vcant:=actualizar(vcant);
- vpr:=TO_NUMBER(extraer(vprec));
- vprec:=actualizar(vprec);
- INSERT INTO DETALLE(f,p,c,pr)VALUES(vf,vp,vc,
- vpr);
- END LOOP;
- END;
- /
- CALL ADD_FACTURA('15;8;3;','5;125;4;','1.25;80;125;');
Advertisement
Add Comment
Please, Sign In to add comment