miércoles, 26 de septiembre de 2012


CREATE TABLE PERSONA (
  ID_PERSONA VARCHAR2(5) NOT NULL,
  PERSONA_NOMBRES VARCHAR2(20) NOT NULL,
  PERSONA_APELL_PAT VARCHAR2(20) NOT NULL,
  PERSONA_APELL_MAT VARCHAR2(20),
  PERSONA_SEXO VARCHAR2(1) NOT NULL,
  PERSONA_DNI VARCHAR2(12) NOT NULL,
  CONSTRAINT PK_PERSONA PRIMARY KEY (ID_PERSONA) ENABLE );

ALTER TABLE PERSONA ADD CONSTRAINT UNQ_PERSONA_DNI UNIQUE (PERSONA_DNI) ENABLE;

ALTER TABLE PERSONA ADD CONSTRAINT CHK_PERSONA_SEXO CHECK (PERSONA_SEXO IN ('M', 'F')) ENABLE;

--INSERT INTO VALUES ('01',)


CREATE OR REPLACE PROCEDURE PROC_I_PERSONA (V_ID_PERSONA VARCHAR2,
                                            V_PERSONA_NOMBRES VARCHAR2,
                                            V_PERSONA_APELL_PAT VARCHAR2,
                                            V_PERSONA_APELL_MAT VARCHAR2,
                                            V_PERSONA_SEXO VARCHAR2,
                                            V_PERSONA_DNI VARCHAR2) AS
BEGIN
 
  INSERT INTO PERSONA VALUES (V_ID_PERSONA,
                              V_PERSONA_NOMBRES,
                              V_PERSONA_APELL_PAT,
                              V_PERSONA_APELL_MAT,
                              V_PERSONA_SEXO,
                              V_PERSONA_DNI);
 
END PROC_I_PERSONA;

------------------------------------------------------------------------------------------------


SELECT LPAD(MAX(ID_PERSONA) + 1,5,'0')
FROM PERSONA:

    SELECT LPAD((NVL(MAX(ID_PERSONA) , 0) + 1).5.'0') INTO V_ID_PERSONA
    FROM PERSONA;


CREATE OR REPLACE PROCEDURE PROC_II_PERSONA (V_PERSONA_NOMBRES VARCHAR2,
                                            V_PERSONA_APELL_PAT VARCHAR2,
                                            V_PERSONA_APELL_MAT VARCHAR2,
                                            V_PERSONA_SEXO VARCHAR2,
                                            V_PERSONA_DNI VARCHAR2) AS
V_ID_PERSONA VARCHAR2(5);                                    
                                         
BEGIN
   
    SELECT LPAD((NVL(MAX(ID_PERSONA) , 0) + 1),5,'0') INTO V_ID_PERSONA
    FROM PERSONA;
 
  INSERT INTO PERSONA VALUES (V_ID_PERSONA,
                              V_PERSONA_NOMBRES,
                              V_PERSONA_APELL_PAT,
                              V_PERSONA_APELL_MAT,
                              V_PERSONA_SEXO,
                              V_PERSONA_DNI);
 
END PROC_II_PERSONA;

select * from PERSONA;

----------------------------------------------------------------------------------------------

CREATE OR REPLACE PROCEDURE PROC_III_PERSONA (V_PERSONA_NOMBRES VARCHAR2,
                                            V_PERSONA_APELL_PAT VARCHAR2,
                                            V_PERSONA_APELL_MAT VARCHAR2,
                                            V_PERSONA_SEXO VARCHAR2,
                                            V_PERSONA_DNI VARCHAR2) AS
V_ID_PERSONA VARCHAR2(5);                                    
V_SEXO_VALIDO VARCHAR(2);

BEGIN
   
    SELECT LPAD((NVL(MAX(ID_PERSONA) , 0) + 1),5,'0') INTO V_ID_PERSONA
    FROM PERSONA;
 
    IF  (V_PERSONA_SEXO ='m') THEN
      V_SEXO_VALIDO := 'M';
    END IF;
   
    IF  (V_PERSONA_SEXO ='M') THEN
      V_SEXO_VALIDO := V_PERSONA_SEXO ;
    END IF;
   
    IF  (V_PERSONA_SEXO ='f') THEN
      V_SEXO_VALIDO :='F';
    END IF;
   
    IF  (V_PERSONA_SEXO ='F') THEN
      V_SEXO_VALIDO := V_PERSONA_SEXO ;
    END IF;
   
   
  INSERT INTO PERSONA VALUES (V_ID_PERSONA,
                              V_PERSONA_NOMBRES,
                              V_PERSONA_APELL_PAT,
                              V_PERSONA_APELL_MAT,
                              V_SEXO_VALIDO,
                              V_PERSONA_DNI);
 
END PROC_III_PERSONA;

-------------------------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE PROC_IV_PERSONA (V_ID_PERSONA VARCHAR2) AS

BEGIN

  DELETE FROM PERSONA
  WHERE ID_PERSONA = V_ID_PERSONA;

END PROC_IV_PERSONA;


CREATE OR REPLACE PROCEDURE PROC_V_PERSONA (V_ID_PERSONA VARCHAR2,
                                            V_PERSONA_NOMBRES VARCHAR2,
                                            V_PERSONA_APELL_PAT VARCHAR2,
                                            V_PERSONA_APELL_MAT VARCHAR2,
                                            V_PERSONA_SEXO VARCHAR2,
                                            V_PERSONA_DNI VARCHAR2 ) AS

BEGIN

  UPDATE PERSONA
  SET PERSONA_NOMBRES = V_PERSONA_NOMBRES,
      PERSONA_APELL_PAT = V_PERSONA_APELL_PAT,
      PERSONA_APELL_MAT = V_PERSONA_APELL_MAT,
      PERSONA_SEXO = V_PERSONA_SEXO,
      PERSONA_DNI = V_PERSONA_DNI
 
  WHERE ID_PERSONA = V_ID_PERSONA;

END PROC_V_PERSONA;

0 comentarios:

Publicar un comentario

Copyright @2009