jueves, 27 de septiembre de 2012


--CREAR UN PROCEDIMIENTO ALMACENADO QUE
--PERMITA INGRESAR DATOS A LA TABLA PERSONA

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;

EXECUTE PROC_I_PERSONA ('00001','JUAN ALEJANDRO','ROSALES','CORONEL','M','452835245');

SELECT * FROM PERSONA;

--VALOR MAXIMO DEL CODIGO DE LA PERSONA

SELECT MAX(ID_PERSONA) FROM PERSONA ;

SELECT MAX(ID_PERSONA+1) FROM PERSONA ;

--FUNCION DE CONVERSION
SELECT NVL(MAX(ID_PERSONA),0)+1 FROM PERSONA ;

--RELLENAR CON CEROS CPOR LA IZQUIERDA
SELECT LPAD(NVL(MAX(ID_PERSONA),0)+1,5,0) FROM PERSONA ;


--PROCEDIMIENTO ALMACENADO PERMITE GENERA CODIGO AUTOMATICAMENTE
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;

EXECUTE PROC_II_PERSONA ('JUAN ALEJANDRO','ROSALES','CORONEL','M','452535245');


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

--CREAR UN PROCEDIMIENTO ALMACENADO QUE NOS PERMITA INGRSAR SEXO ''m' y 'f'
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 VARCHAR2(1);

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;


EXECUTE PROC_III_PERSONA ('JUAN ALEJANDRO','ROSALES','CORONEL','m','452735845');
SELECT * FROM PERSONA;

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

--CREAR UN PROCEDIMIENTOALAMCANADO QUE ME PERMITA BORRAR UNA FILA EN FUNCION DE CODIGOA

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;

EXECUTE PROC_IV_PERSONA ('00004')

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

--CREAR UN PROCEDIMIENTO ALMACENADO QUE ME PERMITA ACTUALIZAR TODOS LOS CAMPOS EB FUNCION DEL CODIGO


CREATE OR REPLACE PROCEDURE PROC_IV_PERSONA(V_PERSONA_NOMBRES VARCHAR,
                                            V_PERSONA_APELL_PAT VARCHAR,
                                            V_PERSONA_APELL_MAT VARCHAR,
                                            V_PERSONA_SEXO VARCHAR2,
                                            V_PERSONA_DNI VARCHAR2 )AS

V_ID_PERSONA VARCHAR2(5);
V_SEXO_VALIDO VARCHAR2(1);                                          
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_IV_PERSONA;
SELECT * FROM PERSONA;
EXECUTE PROC_IV_PERSONA ('BRYAN CARLOS','DJSENSORIAL','RODRIGUEZ','m','485269524');

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

BEGIN

DELETE FROM PERSONA
WHERE V_ID_PERSONA = ID_PERSONA;

END PROC_VI_PERSONA;

SELECT * FROM PERSONA;
EXECUTE PROC_VI_PERSONA ('00006')

-------------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE PROC_VII_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

V_SEXO_VALIDO VARCHAR2(1);
BEGIN

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;


    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_SEXO_VALIDO,
        PERSONA_DNI = V_PERSONA_DNI
     
    WHERE ID_PERSONA=V_ID_PERSONA;


END PROC_VII_PERSONA;

SELECT * FROM PERSONA;
EXECUTE PROC_VII_PERSONA ('00001','BRYAN CARLOS','DJSENSORIAL','DLSENSORIAL','F','495869524');

-------------------------------------------------------------------------------------------------
CREATE TABLE EMPLEADO3 AS
SELECT * FROM EMPLOYEES
--WHERE '1' = '1'

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

CREATE TABLE EMPLEADO2 AS
SELECT * FROM EMPLOYEES
WHERE '1' = ''

------------------------------------
--BORRRA SIN ENVIARA A LA PAPELERA DE RECICLAJE
DROP TABLE EMPLEADO2 PURGE

------------------------------------------------
--BORRAR TODAS LOS DATOS DE UNA TABLA
DELETE FROM EMPLEADO3

------------------------------------------------
--LLENAR TODOS LOS DATOS DE UAN TABLA EN OTRA
INSERT INTO EMPLEADO3
SELECT * FROM EMPLOYEES

---------------------------------------------------
--MOSTRAR TOSAS LAS TABLAS Y VISTAS  DE HR
SELECT *
FROM TAB

--------------------------------------------------
--MOSTRAR TODAS LAS TABLAS DE HR
SELECT *
FROM TAB
WHERE TABTYPE = 'TABLE'

--MOSTRAR TOSAS LOS NOMBRES DE LAS TABLAS
SELECT TNAME
FROM TAB
WHERE TABTYPE = 'TABLE'

--DUPLICAR TODAS LAS TABLAS CON UNA A INICIAL
SELECT 'CREATE TABLE A' || TNAME || ' AS SELECT * FROM ' || TNAME || '; '
FROM TAB
WHERE TABTYPE = 'TABLE'

--BORRAR TODAS LAS TABLAS CREADAS
SELECT 'DROP TABLE A' || TNAME || ' PURGE; '
FROM TAB
WHERE TABTYPE = 'TABLE'
-------------------------------------------------------------------

SELECT 'DROP TABLE A' || TNAME || ' PURGE; '
FROM TAB
WHERE TABTYPE = 'TABLE'
AND TNAME LIKE 'A%'

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;

Copyright @2009