Beruflich Dokumente
Kultur Dokumente
Profesor:
Estudiante:
Materia:
Fecha: 25/03/2019
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
BEGIN
/*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)
Ejercicios
Programación en Bases de Datos 7
ANEXO B. Primo
Ejercicios
Programación en Bases de Datos 8
Factorial (n)
fx int;
BEGIN
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
BEGIN
Ejercicios
Programación en Bases de Datos 11
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;
END SUMATORIA;
Ejercicios
Programación en Bases de Datos 13
ANEXO E. Sumatoria
Ejercicios
Programación en Bases de Datos 14
BEGIN
Ejercicios
Programación en Bases de Datos 15
Ejercicios
Programación en Bases de Datos 16
Es par (n)
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
(
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
Else
End if;
End if;
END MCD;
Ejercicios
Programación en Bases de Datos 19
Ejercicios
Programación en Bases de Datos 20
Ejercicios
Programación en Bases de Datos 21
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);
l := Substr(STR, i, 1);
t := t
||''
||l;
END LOOP;
IF t = STR THEN
ELSE
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);
RETURN c;
END IF;
END LOOP;
END VOCALINTERNA;
Ejercicios
Programación en Bases de Datos 25
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);
Ejercicios
Programación en Bases de Datos 27
Ejercicios
Programación en Bases de Datos 28
CAPITULO 2
Modelo
Ejercicios
Programación en Bases de Datos 29
DDL
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.';
Ejercicios
Programación en Bases de Datos 31
ALTER TABLE boletos ADD CONSTRAINT boletos_ck_precio CHECK ( precio >= 0 );
Ejercicios
Programación en Bases de Datos 32
Ejercicios
Programación en Bases de Datos 33
'Este es email del cliente. Debe ir en may·scula y con el simbolo @.';
ALTER TABLE clientes ADD CONSTRAINT clientes_ck_correo CHECK ( email LIKE '%@%.%'
);
Ejercicios
Programación en Bases de Datos 34
Ejercicios
Programación en Bases de Datos 35
COMMENT ON COLUMN funciones.precio 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.';
Ejercicios
Programación en Bases de Datos 37
'Es el nombre del municipio. Debe de ir en may·scula.';
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...';
Ejercicios
Programación en Bases de Datos 39
REFERENCES peliculas ( pelicula_id );
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
Ejercicios
Programación en Bases de Datos 43
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
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
Ejercicios
Programación en Bases de Datos 48
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
Ejercicios
Programación en Bases de Datos 61
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
Ejercicios
Programación en Bases de Datos 71
CAPITULO 4
Autenticar
P_USUARIO_ID IN NUMBER
) 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*/
/*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
p_password := null;
/*Aqui trae el nombre del usuario de la tabla por medio la variable U ya declara anteriormente*/
p_nombre := u.nombre;
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;
end loop;
END AUTENTICAR;
Ejercicios
Programación en Bases de Datos 73
Especificación
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.
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
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.
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
1 significa que fue valido solo un usuario en este caso contrario mostraría 0.
Ejercicios
Programación en Bases de Datos 83
Ejercicios
Programación en Bases de Datos 84
SEGUNDA CORRIDA CON PASSWORD INCORRECTO
Ejercicios
Programación en Bases de Datos 85
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.
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
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';
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*/
/*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*/
END CURP1;
Ejercicios
Programación en Bases de Datos 90
Especificación
p_apellido_paterno: entrada del carácter, contiene el primer 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.
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
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.
Ejercicios
Programación en Bases de Datos 96
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*/
/*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';
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*/
/*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*/
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.
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
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
Ejercicios