Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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));
- 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;
- /* CL = CLIENTE */
- INSERT INTO ENCABEZADO(CL)VALUES(1);
- CREATE OR REPLACE PACKAGE UTILITARIOS IS
- FUNCTION EXTRAER(pCADENA VARCHAR2) RETURN VARCHAR2;
- FUNCTION ACTUALIZAR(pCADENA VARCHAR2) RETURN VARCHAR2;
- PROCEDURE ADD_FACTURA(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;
- PROCEDURE ADD_FACTURA(pPRODUCTOS VARCHAR2
- ,pCANTIDADES VARCHAR2,pPRECIOS VARCHAR2)
- IS
- vPROD VARCHAR2(100):=pPRODUCTOS;
- vCANT VARCHAR2(100):=pCANTIDADES;
- vPREC VARCHAR2(100):=pPRECIOS;
- 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;
- DELETE FROM DETALLE WHERE P IS NULL AND C IS NULL AND PR IS NULL;
- END ADD_FACTURA;
- END UTILITARIOS;
- /
- CALL UTILITARIOS.ADD_FACTURA('15;8;3;','5;125;4;','1.25;80;125;');
Advertisement
Add Comment
Please, Sign In to add comment