Sie sind auf Seite 1von 107

Programación en Bases de Datos 1

Profesor:

Dr. Herman Aguilar Mayo

Estudiante:

 Juan Pablo Badal Arias

Materia:

Programación en Bases de Datos (Grupo 6A8)

Fecha: 25/03/2019

División Académica: Informática y Sistemas

Carrera Profesional: Licenciado en Sistemas Computacionales

Ejercicios
Programación en Bases de Datos 2

Contenido

CAPITULO 1 ............................................................................................................................ 4
Suma (n1, n2) ............................................................................................................................ 4
ANEXO A. Suma .................................................................................................................... 5
Es primo (n)............................................................................................................................... 6
ANEXO B. Primo .................................................................................................................... 7
Factorial (n) ............................................................................................................................... 8
ANEXO C. Factorial ............................................................................................................... 9
Factorial Recursiva (n) .......................................................................................................... 10
ANEXO D. Factorial Recursiva ............................................................................................ 11
Sumatoria (n) .......................................................................................................................... 12
ANEXO E. Sumatoria ........................................................................................................... 13
Sumatoria Recursiva (n) ........................................................................................................ 14
ANEXO F. Sumatoria Recursiva .......................................................................................... 15
Es par (n) ................................................................................................................................. 16
ANEXO G. Par ...................................................................................................................... 17
Máximo Común Divisor (n1, n2) .......................................................................................... 18
ANEXO H. Máximo Común Divisor .................................................................................... 19
Máximo Común Divisor Recursivo (n1, n2) ........................................................................ 20
ANEXO I. Máximo Común Divisor Recursivo .................................................................... 21
Es Palíndromo ......................................................................................................................... 22
ANEXO J. Palíndromo .......................................................................................................... 23
Vocal Interna .......................................................................................................................... 24
ANEXO K. Vocal Interna ..................................................................................................... 25

Ejercicios
Programación en Bases de Datos 3
Consonante Interna ................................................................................................................ 26
ANEXO L. Consonante Interna ............................................................................................ 27
CAPITULO 2 .......................................................................................................................... 28
Modelo ..................................................................................................................................... 28
DDL ....................................................................................................................................... 29
CAPITULO 3 .......................................................................................................................... 41
Esquema .................................................................................................................................. 41
PRIMERA CORRIDA .......................................................................................................... 46
SEGUNDA CORRIDA ......................................................................................................... 59
CAPITULO 4 .......................................................................................................................... 71
Autenticar ................................................................................................................................ 71
Especificación........................................................................................................................ 73
PRIMERA CORRIDA .......................................................................................................... 80
SEGUNDA CORRIDA CON PASSWORD INCORRECTO .............................................. 84
Curp1 ....................................................................................................................................... 88
Especificación........................................................................................................................ 90
CORRIDA DE LA CURP ..................................................................................................... 95
Curp2 ....................................................................................................................................... 97
Especificación........................................................................................................................ 99
CALCULAR CURP DE LA MUJER ................................................................................. 104
CALCULAR CURP DEL HOMBRE ................................................................................. 106

Ejercicios
Programación en Bases de Datos 4
CAPITULO 1

Suma (n1, n2)

create or replace FUNCTION SUMAR_NUMEROS


(
Z IN NUMBER
, W IN NUMBER
) RETURN NUMBER AS

/*Se declaran las variables*/


Calcular NUMBER;

BEGIN

/*Se declara la operación*/


Calcular := Z + W;

/*Returna el valor*/
RETURN calcular;
END SUMAR_NUMEROS;

Ejercicios
Programación en Bases de Datos 5

ANEXO A. Suma

Ejercicios
Programación en Bases de Datos 6

Es primo (n)

create or replace FUNCTION PRIMO


(
Z IN NUMBER
) RETURN VARCHAR2 AS
var1 varchar(20);
BEGIN
/*Se declara una condición donde a Z sera menos 1*/
FOR I IN 2..Z-1 LOOP
/*Devuelve el resto de dividir Z entre I*/
IF MOD(Z,I)=0 THEN
VAR1:='NO ES PRIMO';
/*Goto es una sentencia que desvia el flujo de la ejecución*/
GOTO paso1;
ELSE VAR1:='ES PRIMO';
/*Se finaliza el ciclo FOR Y IF*/
END IF;
END LOOP;
/*Termina la ejecución de GOTO*/
<<paso1>>
RETURN VAR1;
END PRIMO;

Ejercicios
Programación en Bases de Datos 7

ANEXO B. Primo

Ejercicios
Programación en Bases de Datos 8

Factorial (n)

create or replace FUNCTION FACTORIAL


(
Z IN NUMBER
) RETURN NUMBER AS

fx int;

BEGIN

/*Inicializa con valor de 1 fx*/


fx:=1;
/*Se declara un ciclo for hasta donde llegue Z sera multiplicado por
fx*/

for i in 1..Z loop


fx := fx * i;

end loop;

/*returna fx*/
RETURN fx;
END FACTORIAL;

Ejercicios
Programación en Bases de Datos 9

ANEXO C. Factorial

Ejercicios
Programación en Bases de Datos 10

Factorial Recursiva (n)

create or replace FUNCTION FACTORIAL_RECURSIVA


(
V_NUM IN NUMBER
) RETURN NUMBER AS

BEGIN

/*Si V_NUM es menor o igual que 1 va returna 1*/


IF (V_NUM<=1) THEN
RETURN 1;

/*Si no se cumple la condición de arriba, entonces se hace la siguiente


operación*/
ELSE
RETURN V_NUM*FACTORIAL_RECURSIVA(V_NUM-1);
END IF;
END FACTORIAL_RECURSIVA;

Ejercicios
Programación en Bases de Datos 11

ANEXO D. Factorial Recursiva

Ejercicios
Programación en Bases de Datos 12

Sumatoria (n)
create or replace FUNCTION SUMATORIA
(
SUMA IN NUMBER
) RETURN NUMBER AS

resul NUMBER;

BEGIN
resul := 0;
/*Se invoca el ciclo donde SUMA es el resultado esperado,
para que sea sumado asi mismo*/
FOR i in 1..SUMA loop
resul := resul + i;

/*Se finaliza el for y returna el valor*/


end loop;
RETURN resul;

END SUMATORIA;

Ejercicios
Programación en Bases de Datos 13

ANEXO E. Sumatoria

Ejercicios
Programación en Bases de Datos 14

Sumatoria Recursiva (n)

create or replace FUNCTION SUMATORIA_RECURSIVA


(
N_NUM IN NUMBER
) RETURN NUMBER AS

BEGIN

/*Si N_NUM es menor o igual que 1 va returna 1*/


IF (N_NUM<=1) THEN
RETURN 1;

/*Si no se cumple la condición de arriba,


entonces se hace la operación*/
ELSE

/*Se llama asi mismo la función*/


RETURN N_NUM+SUMATORIA_RECURSIVA (N_NUM-1);
END IF;
END SUMATORIA_RECURSIVA;

Ejercicios
Programación en Bases de Datos 15

ANEXO F. Sumatoria Recursiva

Ejercicios
Programación en Bases de Datos 16

Es par (n)

create or replace FUNCTION ES_PAR


(
Z IN NUMBER
) RETURN VARCHAR AS
res varchar(20);
BEGIN

/*Se declara la condición donde cada numero de Z se divide en 2*/


IF MOD (Z, 2)=0 then
/*Mostrara el mensaje'*/
res:='Es par';

else
/*En el caso que no se cumpla sera impar por default*/
res:='Es impar';
end if;
RETURN res;
END ES_PAR;

Ejercicios
Programación en Bases de Datos 17

ANEXO G. Par

Ejercicios
Programación en Bases de Datos 18

Máximo Común Divisor (n1, n2)


create or replace FUNCTION MCD

(
Z IN NUMBER

, Y IN NUMBER

) RETURN NUMBER AS

BEGIN
/*Son condiciones donde Y y Z no deben ser 0 y si es asi returnara el mismo*/

If Y = 0 Then

Return Z;

Else
If Z = 0 Then

Return Y;

/*Donde Z debe ser mayor o igual a Y para determinar el MCD de los numeros teclados*/

Else
If Z >= Y Then

Return MCD(Z - Y, Y);

Else

Return MCD(Z, Y - Z);


End if;

End if;

End if;

END MCD;

Ejercicios
Programación en Bases de Datos 19

ANEXO H. Máximo Común Divisor

Ejercicios
Programación en Bases de Datos 20

Máximo Común Divisor Recursivo (n1, n2)


create or replace FUNCTION MCD_RECURSIVO
(
Z IN NUMBER
, Y IN NUMBER
) RETURN VARCHAR2 AS
MCD NUMBER;
BEGIN
/*Si Z es menor que Y entonces se divide*/
If Z < Y Then
Return MCD_RECURSIVO (Y, Z);
Else
/*Si Y es igual a 0, returna 0*/
If Y = 0 Then
Return Z;
Else
/*Sino returna asi mismo*/
Return MCD_RECURSIVO (Y, MOD (Z, Y));
End if;
End if;
END MCD_RECURSIVO;

Ejercicios
Programación en Bases de Datos 21

ANEXO I. Máximo Común Divisor Recursivo

Ejercicios
Programación en Bases de Datos 22

Es Palíndromo
create or replace FUNCTION PALINDROMO

STR IN VARCHAR2

) RETURN VARCHAR2 AS

l VARCHAR2(50);

t VARCHAR2(50);

resul varchar2(50);

len varchar2(50);

BEGIN

len := length(str);

FOR i IN REVERSE 1..len LOOP

l := Substr(STR, i, 1);

/*aquí || Se utilizan para la concatenación de cuerdas*/

t := t

||''

||l;

END LOOP;

/*Si t es igual a STR entonces es palindromo sino sera lo contrario*/

IF t = STR THEN

resul := ('Es palindromo');

ELSE

resul :=('No palindromo');

END IF;

return resul;

END PALINDROMO;

Ejercicios
Programación en Bases de Datos 23

ANEXO J. Palíndromo

Ejercicios
Programación en Bases de Datos 24

Vocal Interna
create or replace FUNCTION VOCALINTERNA
(
NOMBRE IN VARCHAR2
) RETURN VARCHAR2 AS
C CHAR;
BEGIN
/*Va comenzar en la posición dos*/
FOR i IN 2..Length(NOMBRE) LOOP
c := Substr(NOMBRE, i, 1);

/*Compruebe si el carácter actual es vocal*/


IF c IN ( 'A', 'E', 'I', 'O', 'U' )
OR c IN ( 'a', 'e', 'i', 'o', 'u' ) THEN

RETURN c;
END IF;
END LOOP;
END VOCALINTERNA;

Ejercicios
Programación en Bases de Datos 25

ANEXO K. Vocal Interna

Ejercicios
Programación en Bases de Datos 26

Consonante Interna
create or replace FUNCTION COSONANTEINTERNA
(
NOMBRE IN VARCHAR2
) RETURN VARCHAR2 AS
C CHAR;
BEGIN
/*Va comenzar en la posición dos*/
FOR i IN 2..Length(NOMBRE) LOOP
c := Substr(NOMBRE, i, 1);

/*Compruebe si el carácter actual es cosonante*/


IF c IN ( 'B', 'C', 'D', 'F', 'G','H','J','K','L','M','N','Ñ','P','Q',
'R','S','T','V','W','X','Y','Z' )
OR c IN ( 'b', 'c', 'd', 'f', 'g','h','j','k','l','m','n','ñ','p','q',
'r','s','t','v','w','x','y','z' ) THEN
RETURN c;
END IF;
END LOOP;
END COSONANTEINTERNA;

Ejercicios
Programación en Bases de Datos 27

ANEXO L. Consonante Interna

Ejercicios
Programación en Bases de Datos 28

CAPITULO 2

Modelo

Ejercicios
Programación en Bases de Datos 29

DDL

-- Generado por Oracle SQL Developer Data Modeler 18.4.0.339.1532


-- en: 2019-03-08 12:31:33 CST
-- sitio: Oracle Database 11g
-- tipo: Oracle Database 11g

CREATE TABLE actores (


actor_id NUMBER(10) NOT NULL,
nombre VARCHAR2(50) NOT NULL,
apellido_paterno VARCHAR2(50),
apellido_materno VARCHAR2(50)
);

COMMENT ON TABLE actores IS


'Es el actor principal de la pelÝcula, por el c·al es necesario saber el dato
del protagonista.';

COMMENT ON COLUMN actores.actor_id IS


'Esta columna es la llave primaria de la tabla actor. Sera llenada con una
secuencia.';

COMMENT ON COLUMN actores.nombre IS


'Este es el nombre del actor. Debe de ir en may·scula.';

COMMENT ON COLUMN actores.apellido_paterno IS


'Este es el apellido paterno del actor. Debe de ir en may·scula.';

COMMENT ON COLUMN actores.apellido_materno IS


'Este es el apellido materno del actor. Debe de ir en may·scula.';

ALTER TABLE actores


ADD CONSTRAINT actores_ck_apellidos CHECK ( apellido_paterno IS NOT NULL
OR apellido_materno IS NOT NULL );

ALTER TABLE actores ADD CONSTRAINT actores_pk PRIMARY KEY ( actor_id );

CREATE TABLE asientos (


asiento_id NUMBER(10) NOT NULL,
fila VARCHAR2(10) NOT NULL,
numero NUMBER(10) NOT NULL,
sala_id NUMBER(10) NOT NULL
);

COMMENT ON TABLE asientos IS


'Registro de los asientos que seran ocupados por los clientes.';

Ejercicios
Programación en Bases de Datos 30
COMMENT ON COLUMN asientos.asiento_id IS

'Esta columna es la llave primaria de la tabla asiento. Sera llenada con una
secuencia.';

COMMENT ON COLUMN asientos.fila IS


'La fila estara agrupada por numeros, por el c·al el cliente va a eligir c·al
le parece adecuada.';

COMMENT ON COLUMN asientos.numero IS


'Es el n·mero de fila que va a ocupar el cliente.';

COMMENT ON COLUMN asientos.sala_id IS


'Este el tipo de sala que el cliente quiere ver, ya sea en 2D, 3D et...';

ALTER TABLE asientos ADD CONSTRAINT asientos_pk PRIMARY KEY ( asiento_id );

CREATE TABLE boletos (


boleto_id NUMBER(10) NOT NULL,
fecha DATE NOT NULL,
precio NUMBER(20) NOT NULL,
funcion_id NUMBER(10) NOT NULL,
asiento_id NUMBER(10) NOT NULL,
pelicula_id NUMBER(10) NOT NULL,
cliente_id NUMBER(10) NOT NULL
);

COMMENT ON TABLE boletos IS


'Aqui sera registrado los boletos que fueron comprados o reservados por
Internet.';

COMMENT ON COLUMN boletos.boleto_id IS


'Esta columna es la llave primaria de la tabla boleto. Sera llenada con una
secuencia.';

COMMENT ON COLUMN boletos.fecha IS


'Fecha en la que el boleto fue comprando para darle acceso total al cliente.';

COMMENT ON COLUMN boletos.precio IS


'Precio de la pelÝcula que se esta comprando el cliente.';

COMMENT ON COLUMN boletos.funcion_id IS


'Es el registro de la pelÝcula de tal manera que el cliente allß elegido.';

COMMENT ON COLUMN boletos.asiento_id IS


'Asiento elegido por el cliente.';

COMMENT ON COLUMN boletos.pelicula_id IS


'Nombre de la pelÝcula que el cliente eligi¾ en el boleto.';

COMMENT ON COLUMN boletos.cliente_id IS


'Nombre dek cliente que esta comprando el boleto.';

Ejercicios
Programación en Bases de Datos 31
ALTER TABLE boletos ADD CONSTRAINT boletos_ck_precio CHECK ( precio >= 0 );

ALTER TABLE boletos ADD CONSTRAINT boletos_pk PRIMARY KEY ( boleto_id );

CREATE TABLE cines (


cine_id NUMBER(10) NOT NULL,
nombre VARCHAR2(50) NOT NULL,
direccion VARCHAR2(100) NOT NULL,
telefono NUMBER(10) NOT NULL,
municipio_id NUMBER(10) NOT NULL
);

COMMENT ON TABLE cines IS


'Aqui se registra la informaci¾n del cine para dar su localizaci¾n de ubicaci¾n
para el cliente.';

COMMENT ON COLUMN cines.cine_id IS


'Esta columna es la llave primaria de la tabla cine. Sera llenada con una
secuencia.';

COMMENT ON COLUMN cines.nombre IS


'Es el nombre del cine en la c·al elige el cliente para ver la funci¾n de la
pelÝcula que desea ver. Debe de ir en may·scula.'
;

COMMENT ON COLUMN cines.direccion IS


'Esta es la direcci¾n en donde se localiza el ciine para ver la pelÝcula.';

COMMENT ON COLUMN cines.telefono IS


'Este es el n·mero del cine para contactarlo. Debe de ir solo 10 digÝtos en
este caso.';

COMMENT ON COLUMN cines.municipio_id IS


'Es lugar en donde el cine se encuentra ubicado por ello se debe saber el
municipio.';

ALTER TABLE cines ADD CONSTRAINT telefono_ck_1 CHECK ( telefono = 10 );

ALTER TABLE cines ADD CONSTRAINT cines_pk PRIMARY KEY ( cine_id );

CREATE TABLE clasificaciones (


clasificacion_id NUMBER(10) NOT NULL,
nombre VARCHAR2(50) NOT NULL,
descripcion VARCHAR2(200) NOT NULL
);

COMMENT ON TABLE clasificaciones IS


'Son las clasificaciones que se manejan en el cine, va dependiendo del genero
de la pelÝcula.';

COMMENT ON COLUMN clasificaciones.clasificacion_id IS


'Esta columna es la llave primaria de la tabla clasificacion. Sera llenada con
una secuencia.';

Ejercicios
Programación en Bases de Datos 32

COMMENT ON COLUMN clasificaciones.nombre IS


'Este es el nombre de la clasificacion. Debe de ir en may·scula.';

COMMENT ON COLUMN clasificaciones.descripcion IS


'Sera la descripci¾n en general de la clasificac¾n para saber c·al es
preferible para el tipo de cliente ya sea ni±os o adultos.'
;

ALTER TABLE clasificaciones ADD CONSTRAINT clasificaciones_pk PRIMARY KEY (


clasificacion_id );

CREATE TABLE clientes (


cliente_id NUMBER(10) NOT NULL,
nombre VARCHAR2(50) NOT NULL,
apellido_paterno VARCHAR2(50),
apellido_materno VARCHAR2(50),
"fecha_nacimiento " DATE NOT NULL,
telefono NUMBER(10) NOT NULL,
email VARCHAR2(50) NOT NULL,
calle VARCHAR2(100) NOT NULL,
numero_callle VARCHAR2(10) NOT NULL,
sexo NUMBER(1) NOT NULL,
localidad_id NUMBER(10) NOT NULL,
municipio_id NUMBER(10) NOT NULL
);

COMMENT ON TABLE clientes IS


'Tabla para registrar a los clientes del cine, habrß el cliente 1 como
mostrador para ventas de clientes no registrados.';

COMMENT ON COLUMN clientes.cliente_id IS


'Esta columna es la llave primaria de la tabla cliente. Sera llenada con una
secuencia.';

COMMENT ON COLUMN clientes.nombre IS


'Este es el nombre del cliente. Debe de ir en may·scula.';

COMMENT ON COLUMN clientes.apellido_paterno IS


'Este es el apellido paterno del cliente. Debe de ir en may·scula.';

COMMENT ON COLUMN clientes.apellido_materno IS


'Este es el apellido materno del cliente. Debe de ir en may·scula.';

COMMENT ON COLUMN clientes."fecha_nacimiento " IS


'Este esta es la fecha de nacimiento del cliente. Nos sirve para obtener la
edad del cliente.';

COMMENT ON COLUMN clientes.telefono IS


'Este es el n·mero del cliente. Debe de ir solo 10 digÝtos en este caso.';

COMMENT ON COLUMN clientes.email IS

Ejercicios
Programación en Bases de Datos 33
'Este es email del cliente. Debe ir en may·scula y con el simbolo @.';

COMMENT ON COLUMN clientes.calle IS


'Esta es la calle en donde se localiza el cliente. Debe de ir en may·scula.';

COMMENT ON COLUMN clientes.numero_callle IS


'Este es el numero de calle del cliente para su locaclizaci¾n mas
especificada.';

COMMENT ON COLUMN clientes.sexo IS


'En este caso se manejaran 1 que representara el sexo femenino y 2 sera en este
caso masculino del sexo del cliente.';

COMMENT ON COLUMN clientes.localidad_id IS


'Es necesario saber en donde vive el cliente en este caso se debe especificar
su localidad.';

COMMENT ON COLUMN clientes.municipio_id IS


'Es necesario saber en donde naci¾ el cliente en este caso se debe especificar
su municipio.';

ALTER TABLE clientes


ADD CONSTRAINT clientes_ck_apellidos CHECK ( apellido_paterno IS NOT NULL
OR apellido_materno IS NOT NULL );

ALTER TABLE clientes ADD CONSTRAINT clientes_ck_correo CHECK ( email LIKE '%@%.%'
);

ALTER TABLE clientes ADD constraint clientes_ck_sexo CHECK ( check(sexo IN(


'1', '2'
));)
;
ALTER TABLE clientes ADD CONSTRAINT clientes_ck_telefono CHECK ( telefono = 10 );

ALTER TABLE clientes ADD CONSTRAINT clientes_pk PRIMARY KEY ( cliente_id );

CREATE TABLE creditos (


credito_id NUMBER(10) NOT NULL,
pelicula_id NUMBER(10) NOT NULL,
actor_id NUMBER(10) NOT NULL,
orden NUMBER(10) NOT NULL
);

COMMENT ON TABLE creditos IS


'Es el registro de todas las personas que contribuyeron a la creaci¾n del
video. Desde los protagonistas hasta el ayudante del asistente.'
;

COMMENT ON COLUMN creditos.credito_id IS


'Esta columna es la llave primaria de la tabla credito. Sera llenada con una
secuencia.';

COMMENT ON COLUMN creditos.pelicula_id IS

Ejercicios
Programación en Bases de Datos 34

'Aqui se muestra el crÚdito de la pelÝcula proyectada a lo ·ltimo de quienes


colaboraron.';

COMMENT ON COLUMN creditos.actor_id IS


'Este es actor principal que interpreta la pelÝcula.';

COMMENT ON COLUMN creditos.orden IS


'Se va ordenar para cuando se muestre la cartelera se muestre el actor
principal.';

ALTER TABLE creditos ADD CONSTRAINT creditos_pk PRIMARY KEY ( credito_id );

CREATE TABLE estados (


estado_id NUMBER(50) NOT NULL,
nombre VARCHAR2(50) NOT NULL,
clave_segoto VARCHAR2(2) NOT NULL
);

COMMENT ON TABLE estados IS


'Registro de los estados donde el cliente se ubica.';

COMMENT ON COLUMN estados.estado_id IS


'Esta columna es la llave primaria de la tabla estado. Sera llenada con una
secuencia.';

COMMENT ON COLUMN estados.nombre IS


'Es el nombre del estado. Debe de ir en may·scula.';

COMMENT ON COLUMN estados.clave_segoto IS


'Es una clave del estado para identificarlo.';

ALTER TABLE estados ADD CONSTRAINT estados_pk PRIMARY KEY ( estado_id );

CREATE TABLE funciones (


funcion_id NUMBER(10) NOT NULL,
fecha DATE NOT NULL,
precio NUMBER(20) NOT NULL,
sala_id NUMBER(10) NOT NULL,
pelicula_id NUMBER(10) NOT NULL
);

COMMENT ON TABLE funciones IS


'PelÝcula registrada para la proxima funci¾n a estrenar.';

COMMENT ON COLUMN funciones.funcion_id IS


'Esta columna es la llave primaria de la tabla funcion. Sera llenada con una
secuencia.';

COMMENT ON COLUMN funciones.fecha IS


'Fecha en la que la funcion se va a a estrenar.';

Ejercicios
Programación en Bases de Datos 35
COMMENT ON COLUMN funciones.precio IS

'Precio de la pelÝcula que va a costar.';

COMMENT ON COLUMN funciones.sala_id IS


'Es el tipo de salas que estara disponible la pelÝcula.';

COMMENT ON COLUMN funciones.pelicula_id IS


'Nombre de la pelÝcula que sera registrada.';

ALTER TABLE funciones ADD CONSTRAINT funciones_ck_precio CHECK ( precio >= 0 );

ALTER TABLE funciones ADD CONSTRAINT funciones_pk PRIMARY KEY ( funcion_id );

CREATE TABLE generos (


genero_id NUMBER(10) NOT NULL,
nombre VARCHAR2(50) NOT NULL,
descripcion VARCHAR2(200) NOT NULL
);

COMMENT ON TABLE generos IS


'Es el registro del tipo de pelÝcula que se va a estrenar en este caso puede
que sea de aventuras
Comedias, Dramßticas o de Terror etc...'
;

COMMENT ON COLUMN generos.genero_id IS


'Esta columna es la llave primaria de la tabla genero. Sera llenada con una
secuencia.';

COMMENT ON COLUMN generos.nombre IS


'Este es el nombre del genero. Debe de ir en may·scula.';

COMMENT ON COLUMN generos.descripcion IS


'Esta campo sera la descripci¾n del genero.';

ALTER TABLE generos ADD CONSTRAINT generos_pk PRIMARY KEY ( genero_id );

CREATE TABLE idiomas (


idioma_id NUMBER(10) NOT NULL,
nombre VARCHAR2(50) NOT NULL,
subtitulo VARCHAR2(50) NOT NULL
);

COMMENT ON TABLE idiomas IS


'Este sera el idoma de la pelÝcula y de igual manera se registrara el subtitulo
de dicha pelÝcula.';

COMMENT ON COLUMN idiomas.idioma_id IS


'Esta columna es la llave primaria de la tabla idioma. Sera llenada con una
secuencia.';

COMMENT ON COLUMN idiomas.nombre IS

Ejercicios
Programación en Bases de Datos 36

'Este es el nombre del idioma por el c·al pueda variar el idioma. Debe de ir en
may·scula.';

COMMENT ON COLUMN idiomas.subtitulo IS


'Este es el nombre del subtitulo por el c·al pueda variar el idioma. Debe de ir
en may·scula.';

ALTER TABLE idiomas ADD CONSTRAINT idiomas_pkv2 PRIMARY KEY ( idioma_id );

CREATE TABLE localidades (


localidad_id NUMBER(10) NOT NULL,
nombre VARCHAR2(50) NOT NULL,
codigo_postal NUMBER(5) NOT NULL,
municipio_id NUMBER(10) NOT NULL
);

COMMENT ON TABLE localidades IS


'Registro de las localidades donde se localiza el cliente ya que si es por
lÝnea su compra es necesario conocer su direcci¾n exacta por si gana premios.'
;

COMMENT ON COLUMN localidades.localidad_id IS


'Esta columna es la llave primaria de la tabla localidad. Sera llenada con una
secuencia.';

COMMENT ON COLUMN localidades.nombre IS


'Es el nombre de la localidad en la c·al se ubica el cliente para que lo puedan
ubicar.Debe de ir en may·scula.';

COMMENT ON COLUMN localidades.codigo_postal IS


'Es un identificador del municipio. Debe de ir solo 5 digÝtos en este caso.';

COMMENT ON COLUMN localidades.municipio_id IS


'Es el municipio al que pertenece la localidad.';

ALTER TABLE localidades ADD CONSTRAINT localidades_pk PRIMARY KEY ( localidad_id );

CREATE TABLE municipios (


municipio_id NUMBER(10) NOT NULL,
nombre VARCHAR2(50) NOT NULL,
estado_id NUMBER(50) NOT NULL
);

COMMENT ON TABLE municipios IS


'Registro de los municipios donde se ubica el cliente.';

COMMENT ON COLUMN municipios.municipio_id IS


'Esta columna es la llave primaria de la tabla municipio. Sera llenada con una
secuencia.';

COMMENT ON COLUMN municipios.nombre IS

Ejercicios
Programación en Bases de Datos 37
'Es el nombre del municipio. Debe de ir en may·scula.';

COMMENT ON COLUMN municipios.estado_id IS


'Es el estado al que pertenece el municipio.';

ALTER TABLE municipios ADD CONSTRAINT municipios_pk PRIMARY KEY ( municipio_id );

CREATE TABLE peliculas (


pelicula_id NUMBER(10) NOT NULL,
titulo VARCHAR2(200) NOT NULL,
duracion NUMBER(3) NOT NULL,
sinopsi VARCHAR2(4000) NOT NULL,
genero_id NUMBER(10) NOT NULL,
clasificacion_id NUMBER(10) NOT NULL,
idioma_id NUMBER(10) NOT NULL
);

COMMENT ON TABLE peliculas IS


'Es para registrar la pelicula que estan aproximamente a estranarse.';

COMMENT ON COLUMN peliculas.pelicula_id IS


'Esta columna es la llave primaria de la tabla pelicula. Sera llenada con una
secuencia. ';

COMMENT ON COLUMN peliculas.titulo IS


'Nombre del titulo de la pelicula con el c·al sera registrada para su pr¾ximo
estreno.';

COMMENT ON COLUMN peliculas.duracion IS


'La duraci¾n sera en minutos, es el tiempo en que tarda la pelÝcula.';

COMMENT ON COLUMN peliculas.sinopsi IS


'Es una introducci¾n de lo que se trata la pelÝcula.';

COMMENT ON COLUMN peliculas.genero_id IS


'Registro del genero que pertenece a la pelÝcula.';

COMMENT ON COLUMN peliculas.clasificacion_id IS


'Es el tipo de clasificaci¾n ya sea para ni±os, adultos o para ambos.';

COMMENT ON COLUMN peliculas.idioma_id IS


'Es el idoma que esta la pelÝcula que se vaya a ver.';

ALTER TABLE peliculas ADD CONSTRAINT peliculas_pk PRIMARY KEY ( pelicula_id );

CREATE TABLE salas (


sala_id NUMBER(10) NOT NULL,
nombre VARCHAR2(10) NOT NULL,
cine_id NUMBER(10) NOT NULL
);

COMMENT ON TABLE salas IS

Ejercicios
Programación en Bases de Datos 38
'Es el tipo de sala en donde va a ver el cliente la pelÝcula ya sea en 2D, 3D
etc...';

COMMENT ON COLUMN salas.sala_id IS


'Esta columna es la llave primaria de la tabla sala. Sera llenada con una
secuencia.';

COMMENT ON COLUMN salas.nombre IS


'Este es el nombre de la sala. Debe de ir en may·scula.';

COMMENT ON COLUMN salas.cine_id IS


'Es la ubicaci¾n del cine en donde va a ver la pelÝcula el cliente.';

ALTER TABLE salas ADD CONSTRAINT salas_pk PRIMARY KEY ( sala_id );

ALTER TABLE asientos


ADD CONSTRAINT asientos_salas_fk FOREIGN KEY ( sala_id )
REFERENCES salas ( sala_id );

ALTER TABLE boletos


ADD CONSTRAINT boletos_asientos_fk FOREIGN KEY ( asiento_id )
REFERENCES asientos ( asiento_id );

ALTER TABLE boletos


ADD CONSTRAINT boletos_clientes_fk FOREIGN KEY ( cliente_id )
REFERENCES clientes ( cliente_id );

ALTER TABLE boletos


ADD CONSTRAINT boletos_funciones_fk FOREIGN KEY ( funcion_id )
REFERENCES funciones ( funcion_id );

ALTER TABLE boletos


ADD CONSTRAINT boletos_peliculas_fk FOREIGN KEY ( pelicula_id )
REFERENCES peliculas ( pelicula_id );

ALTER TABLE cines


ADD CONSTRAINT cines_municipios_fk FOREIGN KEY ( municipio_id )
REFERENCES municipios ( municipio_id );

ALTER TABLE clientes


ADD CONSTRAINT clientes_localidades_fk FOREIGN KEY ( localidad_id )
REFERENCES localidades ( localidad_id );

ALTER TABLE clientes


ADD CONSTRAINT clientes_municipios_fk FOREIGN KEY ( municipio_id )
REFERENCES municipios ( municipio_id );

ALTER TABLE creditos


ADD CONSTRAINT creditos_actores_fk FOREIGN KEY ( actor_id )
REFERENCES actores ( actor_id );

ALTER TABLE creditos


ADD CONSTRAINT creditos_peliculas_fk FOREIGN KEY ( pelicula_id )

Ejercicios
Programación en Bases de Datos 39
REFERENCES peliculas ( pelicula_id );

ALTER TABLE funciones


ADD CONSTRAINT funciones_peliculas_fk FOREIGN KEY ( pelicula_id )
REFERENCES peliculas ( pelicula_id );

ALTER TABLE funciones


ADD CONSTRAINT funciones_salas_fk FOREIGN KEY ( sala_id )
REFERENCES salas ( sala_id );

ALTER TABLE localidades


ADD CONSTRAINT localidades_municipios_fk FOREIGN KEY ( municipio_id )
REFERENCES municipios ( municipio_id );

ALTER TABLE municipios


ADD CONSTRAINT municipios_estados_fk FOREIGN KEY ( estado_id )
REFERENCES estados ( estado_id );

ALTER TABLE peliculas


ADD CONSTRAINT peliculas_clasificaciones_fk FOREIGN KEY ( clasificacion_id )
REFERENCES clasificaciones ( clasificacion_id );

ALTER TABLE peliculas


ADD CONSTRAINT peliculas_generos_fk FOREIGN KEY ( genero_id )
REFERENCES generos ( genero_id );

ALTER TABLE peliculas


ADD CONSTRAINT peliculas_idiomas_fk FOREIGN KEY ( idioma_id )
REFERENCES idiomas ( idioma_id );

ALTER TABLE salas


ADD CONSTRAINT salas_cines_fk FOREIGN KEY ( cine_id )
REFERENCES cines ( cine_id );

-- Informe de Resumen de Oracle SQL Developer Data Modeler:


--
-- CREATE TABLE 15
-- CREATE INDEX 0
-- ALTER TABLE 41
-- CREATE VIEW 0
-- ALTER VIEW 0
-- CREATE PACKAGE 0
-- CREATE PACKAGE BODY 0
-- CREATE PROCEDURE 0
-- CREATE FUNCTION 0
-- CREATE TRIGGER 0
-- ALTER TRIGGER 0
-- CREATE COLLECTION TYPE 0
-- CREATE STRUCTURED TYPE 0
-- CREATE STRUCTURED TYPE BODY 0
-- CREATE CLUSTER 0

Ejercicios
Programación en Bases de Datos 40
-- CREATE CONTEXT 0
-- CREATE DATABASE 0
-- CREATE DIMENSION 0
-- CREATE DIRECTORY 0
-- CREATE DISK GROUP 0
-- CREATE ROLE 0
-- CREATE ROLLBACK SEGMENT 0
-- CREATE SEQUENCE 0
-- CREATE MATERIALIZED VIEW 0
-- CREATE MATERIALIZED VIEW LOG 0
-- CREATE SYNONYM 0
-- CREATE TABLESPACE 0
-- CREATE USER 0
--
-- DROP TABLESPACE 0
-- DROP DATABASE 0
--
-- REDACTION POLICY 0
--
-- ORDS DROP SCHEMA 0
-- ORDS ENABLE SCHEMA 0
-- ORDS ENABLE OBJECT 0
--
-- ERRORS 0
-- WARNINGS 0

Ejercicios
Programación en Bases de Datos 41
CAPITULO 3

Esquema

Ejercicios
Programación en Bases de Datos 42

 Aquí se visualiza el modelo relacional así como se muestra se da aceptar.

Ejercicios
Programación en Bases de Datos 43

 Aquí es para generar el archivo DDL.

Ejercicios
Programación en Bases de Datos 44

 Aquí es donde se generan las tablas y se genera el código del DDL para copiar.

Ejercicios
Programación en Bases de Datos 45

 Se entra en el programa de SQLDeveloper para crear las tablas.

Ejercicios
Programación en Bases de Datos 46
PRIMERA CORRIDA
 Aquí se pega el código DDL y se ejecuta para la creación de las tablas.

Ejercicios
Programación en Bases de Datos 47

 Aquí se está ejecutando las tablas.

Ejercicios
Programación en Bases de Datos 48

 Se muestran los resultados obtenidos de la ejecución finalizada en SQLDeveloper.

Ejercicios
Programación en Bases de Datos 49

Ejercicios
Programación en Bases de Datos 50

 Se muestra a continuación los errores identificados que se deben corregir, en general solo
era un error que generaba los demás errores.

Ejercicios
Programación en Bases de Datos 51

Ejercicios
Programación en Bases de Datos 52

Ejercicios
Programación en Bases de Datos 53

Ejercicios
Programación en Bases de Datos 54

Ejercicios
Programación en Bases de Datos 55

Ejercicios
Programación en Bases de Datos 56

Ejercicios
Programación en Bases de Datos 57

Ejercicios
Programación en Bases de Datos 58

Ejercicios
Programación en Bases de Datos 59
SEGUNDA CORRIDA
 Aquí se vuelve a generar el DDL pero se debe dar clic en “DROP” y seleccionar
posteriormente tablas, para que elimine las tablas como entrada y vuelva ejecutar el código
desde 0.

Ejercicios
Programación en Bases de Datos 60

 Aquí s e ejecuta primero la instrucción “DROP” para borrar las tablas.

Ejercicios
Programación en Bases de Datos 61

 En la segunda corrida ya se muestra las tablas correctamente ejecutadas.

Ejercicios
Programación en Bases de Datos 62

Ejercicios
Programación en Bases de Datos 63

Ejercicios
Programación en Bases de Datos 64

Ejercicios
Programación en Bases de Datos 65

Ejercicios
Programación en Bases de Datos 66

Ejercicios
Programación en Bases de Datos 67

Ejercicios
Programación en Bases de Datos 68

Ejercicios
Programación en Bases de Datos 69

Ejercicios
Programación en Bases de Datos 70

 Se muestra en nuestra base de datos las tablas ya guardadas

Ejercicios
Programación en Bases de Datos 71
CAPITULO 4
Autenticar

create or replace PROCEDURE AUTENTICAR

P_USUARIO_ID IN NUMBER

, P_PASSWORD IN OUT VARCHAR2

, P_NOMBRE OUT VARCHAR2

, P_FECHA OUT DATE

, P_VALIDO OUT NUMBER

, P_ERROR OUT VARCHAR2

) AS

BEGIN

/*El parametro con el nombre p_valido que inicializa en 0 indica que el usuario o password no son válidos y
si es asi se manda un mensaje de texto que está almacenado en el parametro p_error*/

p_valido:=0; p_error := 'usuario / password no valido';

/*Se hace un for donde se declara la variable U que sera de entrada y se integra en parentesis el select que es
para seleccionar el nombre de la tabla usuarios donde se valida si es igual al dato de la base de datos*/

for u in (select nombre from usuarios where usuario_id = p_usuario_id and password = p_password) loop

/*Indica que el password no se mostrara en el campo ya ejecutado de manera correcta de lo contrario si es


inválido lo mostrara porque no es null*/

p_password := null;

/*Aqui trae el nombre del usuario de la tabla por medio la variable U ya declara anteriormente*/

p_nombre := u.nombre;

/*Muestra la fecha en la que accedió el usuario, ya que se extrae con sysdate*/

p_fecha := sysdate;

Ejercicios
Programación en Bases de Datos 72
/*Indica que accedió el usuario correctamente*/

p_valido:=1;

/*Aqui es donde muestra el mensaje de texto del error de usuario y password declarado al principio*/

p_error:=null;

/*Termina el ciclo for*/

end loop;

END AUTENTICAR;

Ejercicios
Programación en Bases de Datos 73

Especificación

p_usuario_id: entrada carácter, contiene la clave de usuario a autenticar.

p_password: entrada y salida varchar2, contiene la contraseña del usuario a autenticar


(debería ser un hash), se limpia para que no regrese.

p_nombre: salida carácter, nombre del usuario autenticado, nulo si no lo es.

p_fecha: salida date, contiene la fecha y hora del servidor al momento de ser autenticado, nulo
si no lo es.

p_valido: salida numérica, 0 no autenticado, 1 sí autenticado, usa valores lógicos con número,
podría ser otra codificación.

p_error: salida carácter, mensaje de error en caso de no ser válido.

Ejercicios
Programación en Bases de Datos 74
En la hoja de trabajo de mi base de datos cree en la tabla usuario con los atributos usuario_id,
nombre y password ya que se utilizarán para insertar los datos del usuario y validar el autenticar
para que el usuario sea validado en el sistema y de igual manera se hace un ALTER TABLE
que indica la llave primaria que es la clave única del registro.

Se inserta los datos en la tabla que creamos de USUARIOS con sus atributos correspondientes,
y así sucesivamente se va guardando en la tabla y en el mensaje de salida se muestra que la
fila fue insertada. Como se muestra a continuación:

Ejercicios
Programación en Bases de Datos 75

Ejercicios
Programación en Bases de Datos 76

Ejercicios
Programación en Bases de Datos 77

 Se muestra los datos ya almacenados en la tabla USUARIOS.

Ejercicios
Programación en Bases de Datos 78

Se debe crear el procedimiento AUTENTICAR donde se le debe especificar los parámetros que se
utilizaran ya sea IN, IN OUT o OUT y el tipo de dato para identificar si va ir de Varchar2, Number y
Date etc. Ya que al aceptar crea la estructura principal para declarar la lógica del problema a
resolver.

Ejercicios
Programación en Bases de Datos 79
Se muestra la estructura del procedimiento con los parámetros definidos, ahora declarar en el
BEGIN la instrucción que va a realizar en este caso se va a validar la tabla USUARIOS con los
datos ya existentes en caso contrario se debe indicar con un mensaje que el “usuario o password
no son válidos”.

Ejercicios
Programación en Bases de Datos 80
PRIMERA CORRIDA
 Se ejecuta el procedimiento para hacer la prueba si el usuario existe en la tabla
USUARIOS.

 Se muestra de bajo la acción ejecutada correctamente a la base de datos.

Ejercicios
Programación en Bases de Datos 81

 Aquí se muestra que el usuario Óscar Gómez López está registrado y que su password es
correcto. Sucesivamente se ira mostrando los resultados de los campos correspondientes.

Ejercicios
Programación en Bases de Datos 82

 Se muestra la fecha en que el usuario accedió.

 1 significa que fue valido solo un usuario en este caso contrario mostraría 0.

Ejercicios
Programación en Bases de Datos 83

 No se muestra ningún error porque el usuario accedió correctamente.

Ejercicios
Programación en Bases de Datos 84
SEGUNDA CORRIDA CON PASSWORD INCORRECTO

Ejercicios
Programación en Bases de Datos 85

 Se muestra el password porque no coincide con el dato registrado en la tabla USUARIOS.

 No se muestra el nombre porque el usuario_id no coincidió con la base de datos donde está
registrado los nombres.

Ejercicios
Programación en Bases de Datos 86
 No procede porque el usuario no accedió correctamente.

 No accedió el usuario por lo que nos mostrara en 0.

Ejercicios
Programación en Bases de Datos 87

 Muestra el mensaje de “usuario / password no valido” donde el texto lo dice todo que no
coincidieron con la base de datos.

Ejercicios
Programación en Bases de Datos 88

Curp1

CREATE OR REPLACE PROCEDURE CURP1


(
P_NOMBRE IN VARCHAR2
, P_APELLIDO_PATERNO IN VARCHAR2
, P_APELLIDO_MATERNO IN VARCHAR2
, P_FECHA_NACIMIENTO IN DATE
, P_SEXO IN VARCHAR2
, P_ESTADO IN VARCHAR2
, P_CURP OUT VARCHAR2
) AS

v_SEXO VARCHAR(10);
V_ESTADO VARCHAR(10);

BEGIN

/*Se declara un if donde al ingresar al campo p_sexo debemos colocar 1 si es mujer de lo contrario cualquier
numero mayor a 1 sera hombre*/

if p_SEXO=1 then
v_SEXO:='M';
else
v_SEXO:='H';

/*Se termina el if*/


end if;

Ejercicios
Programación en Bases de Datos 89

/*Aqui se manda a llamar la tabla estados donde esta almacenados las clave segob donde se le pasara al
parametro v_estado cuando el estado_id sea igual al dato del campo p_estado*/

Select clave_segob into V_ESTADO from estados where estado_id = p_estado;

/*En el parámetro p_curp se hace una concatenación donde las letras se irán poniendo juntas, también se
declara un SUBSTR que es para obtener una parte específica de una cadena de caracteres y de igual manera
se manda a llamar la función de vocal y consonante interna*/

P_CURP := substr (P_APELLIDO_PATERNO, 1,1) || VOCALINTERNA(p_APELLIDO_PATERNO)||


substr (p_APELLIDO_MATERNO, 1,1) || substr (p_NOMBRE, 1,1)|| to_char (p_FECHA_NACIMIENTO,
'yymmdd')|| v_sexo|| v_estado||COSONANTEINTERNA(p_APELLIDO_PATERNO)||
COSONANTEINTERNA (p_APELLIDO_MATERNO)||COSONANTEINTERNA(p_NOMBRE);

END CURP1;

Ejercicios
Programación en Bases de Datos 90

Especificación

p_nombre: entrada del carácter, nombre de la persona para calcular su CURP.

p_apellido_paterno: entrada del carácter, contiene el primer apellido de la persona para para
calcular su CURP.

p_apellido_materno: entrada del carácter, contiene el segundo apellido de la persona para


para calcular su CURP.

p_fecha_nacimiento: entrada como DATE, contiene la fecha en la que nació la persona para
calcular su CURP.

p_sexo: entrada del carácter, contiene el sexo ya sea hombre que será representado con “H”
y mujer con “M” al momento de calcular la CURP.

p_estado: entrada del carácter, donde contiene por medio del ID la clave SEGOB usada para
identificar el estado en el cálculo de la CURP.

p_curp: salida del carácter, donde se mostrará la CURP de la persona ya concatenada.

Ejercicios
Programación en Bases de Datos 91

 Se muestra a continuación que se insertaron los datos en la tabla ESTADOS como su clave
SEGOB de cada uno, para que se pueda utilizar en el procedimiento de la CURP.

Ejercicios
Programación en Bases de Datos 92

 Se muestra los datos insertados correctamente.

 Ahora se muestran los datos almacenados correctamente en la base de datos.

Ejercicios
Programación en Bases de Datos 93

Se debe crear el procedimiento CURP1 donde se le debe especificar los parámetros que se
utilizaran y el tipo de dato. Ya que solo P_CURP será de salida porque mostrará las letras
concatenadas de los datos parámetros declarados.

Ejercicios
Programación en Bases de Datos 94
 Se muestra el procedimiento ya guardado y listo para comenzar a declarar las variables o
parámetros para extraer las cadenas con SUBSTR y de igual manera con un SELECT se
extraerá la clave SEBOG para cada estado.

Ejercicios
Programación en Bases de Datos 95
CORRIDA DE LA CURP
 Se ejecuta el procedimiento para sacar mi CURP, ya que los parámetros son de entradas.

 La ejecución del procedimiento fue ejecutada correctamente.

Ejercicios
Programación en Bases de Datos 96

 Se muestra como salida la CURP1 ya calculada correctamente.

Ejercicios
Programación en Bases de Datos 97

Curp2
create or replace PROCEDURE CURP2
(
P_PERSONA_ID IN VARCHAR2
, P_CURP OUT VARCHAR2
) AS
v_SEXO VARCHAR(10);
V_ESTADO VARCHAR(10);
BEGIN

/*Se hace un for donde se declara la variable U que sera de entrada y se integra en parentesis el select que es
para seleccionar los campos de la tabla personas donde persona_id sea igual al parametro p_persona_id
donde sera de entrada para hacer la comparacion en la base de datos*/

for u in (select APELLIDO_PATERNO, APELLIDO_MATERNO,


NOMBRE,FECHA_NACIMIENTO,SEXO, ESTADO from personas where persona_id = p_persona_id) loop

/*Se declara un if donde se declara u.sexo para recibir el dato que contiene en la tabla persona y asi comparar
ese dato y obtener si es 1 colocar M de mujer de lo contrario cualquier numero mayor a 1 sera hombre*/

if u.SEXO=1 then
v_SEXO:='M';
else
v_SEXO:='H';

/*Se termina el if*/


end if;

Ejercicios
Programación en Bases de Datos 98

/*Aqui se manda a llamar la tabla estados donde esta almacenados las clave segob donde se le pasara al
parametro v_estado que va extraer la clave cuando el nombre de la tabla estados sea igual al dato del nombre
del campo estado de la tabla personas entonces trae su clave segob que esta en la tabla estados*/

Select clave_segob into v_estado from estados where NOMBRE = u.estado;

/*En el parámetro p_curp se hace una concatenación donde las letras se irán poniendo juntas, también se
declara un SUBSTR que es para obtener una parte específica de una cadena de caracteres y de igual manera
se manda a llamar la función de vocal y consonante interna y de igual manera se extraera de la tabla personas
con la variable u de entrada*/

P_CURP := substr (u.APELLIDO_PATERNO, 1,1)|| VOCALINTERNA(u.APELLIDO_PATERNO)|| substr


(u.APELLIDO_MATERNO, 1,1) || substr (u.NOMBRE, 1,1)
|| to_char (u.FECHA_NACIMIENTO,
'yymmdd')||v_SEXO||v_estado||COSONANTEINTERNA(u.APELLIDO_PATERNO)||COSONANTEINTER
NA(u.APELLIDO_MATERNO)||COSONANTEINTERNA(u.NOMBRE);

/*Se termina el for*/

END LOOP;

END CURP2;

Ejercicios
Programación en Bases de Datos 99

Especificación

p_persona_id: entrada del carácter, contiene la clave para identificar a la persona que se
requiera calcular su CURP.

p_curp: salida del carácter, donde se mostrará la CURP de la persona ya concatenada.

Ejercicios
Programación en Bases de Datos 100

 Se crea la tabla personas con los datos necesarios y la llave primaria, como también la columna
estado donde se ingresará el estado donde pertenece la persona y así declarar en el
procedimiento donde nombre que pertenece en la tabla ESTADOS sea igual al campo estado y
así extraer la clave SEGOB.

Ejercicios
Programación en Bases de Datos 101
 Se muestra a continuación que se insertaron los datos en la tabla PERSONAS con su estado
de cada uno donde nació, para que se pueda utilizar en el procedimiento de la CURP.

 Ahora se muestran los datos almacenados correctamente en la tabla personas listo para
calcular su CURP.

Ejercicios
Programación en Bases de Datos 102

 Se debe crear el procedimiento CURP2 donde se le debe especifican dos parámetros que son
persona_id que será de entrada y P_CURP de salida.

Ejercicios
Programación en Bases de Datos 103

Se muestra la estructura del procedimiento con los parámetros definidos, ahora declarar en el
BEGIN la instrucción que va a realizar en este caso se va a calcular la CURP de cada persona
mediante el ID con los datos respetivamente guardados en la base de datos de la tabla persona.

Ejercicios
Programación en Bases de Datos 104
CALCULAR CURP DE LA MUJER
 Se inicializa el procedimiento CURP2 con un ID de MUJER para calcular su CURP ya que solo
se maneja como entrada persona_id y P_CURP como de salida.

Ejercicios
Programación en Bases de Datos 105

 Procedimiento ejecutado correctamente y se muestra que se extrajo la M de mujer en la tabla de


personas que esta con el número 1 que representa en el código del IF como M.

Ejercicios
Programación en Bases de Datos 106
CALCULAR CURP DEL HOMBRE
 Se ejecuta la segunda corrida del procedimiento CURP2 con un ID de HOMBRE para calcular
su CURP ya que solo se maneja como entrada persona_id y P_CURP como de salida.

Ejercicios
Programación en Bases de Datos 107

 Procedimiento ejecutado correctamente y se muestra que se extrajo la H del hombre en la


tabla de personas que esta con el número 2 que representa en el código del IF con else como
H.

Ejercicios

Das könnte Ihnen auch gefallen