Documentos de Académico
Documentos de Profesional
Documentos de Cultura
08 Ejercicios de Programacion SQL Server2008
08 Ejercicios de Programacion SQL Server2008
REPASO
EJERCICIOS
1.- Crea una función DevolverNombreEquipo que reciba un código de equipo y devuelva el nombre del
mismo. Si el equipo no existe devuelve la cadena “Error en código”.
2.- Crea una función DevolverGolesEquipo que reciba el código de un equipo y devuelva el total de
goles a favor y total de goles en contra. Contempla las excepciones oportunas.
·A partir de la tabla partidos, rellena la tabla “Clasificación_liga”, la información la obtiene sólo de los
partidos de “liga”, para calcular los puntos debes considerar 3 puntos las victorias y 1 punto los
empates.
·Para terminar muestra la clasificación de los equipos, ordenados por puntos, y mostrando el nombre
del equipo, en vez del código, todos los datos anteriores.
Nota: Utiliza las funciones y procedimientos que has realizado en los ejercicios anteriores.
5.- Crear un procedimiento MostrarQuinielaJornada que reciba una jornada y muestre la quiniela de
dicha jornada de la liga según los partidos jugados. El resultado debe ser de la siguiente manera:
El 1 será cuando el equipo1 (Local) haya ganado, la X cuando sea un empate y un 2 cuando el equipo 2
(visitante) haya ganado.
Partiendo del esquema que tenemos en el Moodle, que es el que vemos a continuación:
TABLA PARTIDOS
CREATE TABLE Partidos(
CodPartido VARCHAR(4),
CodEquipoLocal VARCHAR(4),
CodEquipoVisitante VARCHAR(4),
Fecha DATE,
Jornada VARCHAR(20),
Gol_Local INT,
Gol_Visitante INT,
CONSTRAINT PK_Partidos PRIMARY KEY (CodPartido),
CONSTRAINT FK_Partidos_EquiposL FOREIGN KEY (CodEquipoLocal) REFERENCES
Equipos(CodEquipo),
CONSTRAINT FK_Partidos_EquiposV FOREIGN KEY (CodEquipoVisitante) REFERENCES
Equipos(CodEquipo),
CONSTRAINT CK_Fecha CHECK (MONTH(FECHA) NOT IN (7,8)))
1.- Crea una función DevolverNombreEquipo que reciba un código de equipo y devuelva el
nombre del mismo. Si el equipo no existe devuelve la cadena “Error en código”.
Creamos la función con el nombre de equipo y declaramos la variable que se va a recibir que
la llamamos “CODIGO” y el tipo de datos que será entero, le decimos que tipo de datos va a
devolver y el máximo de caracteres admitidos por “RETURN”. Una vez hecho esto
comenzamos con el cuerpo de la función en el que declaramos la variable “NOMBRE”
indicamos que si en la variable “CODIGO” no se encuentra un código que esté al hacer un
“SELECT” de CodEquipo desde la tabla “EQUIPOS” nos muestre un mensaje dando a la
variable “NOMBRE” con “SET”, el valor que tenemos en la cadena que escribimos en este
caso “ERROR EN CODIGO” ya que ese código de equipo escrito no pertenece a ningún equipo
de la base de datos; sin embargo cuando no ocurre esto “ELSE” le damos el valor a la variable
“NOMBRE” del “SELECT” sobre el nombre donde “WHERE” CodEquipo sea igual al que hemos
introducido y que ha recogido la variable “CODIGO”, por ultimo devolvemos el contenido de
la variable “NOMBRE”.
COMPROBAMOS EL FUNCIONAMIENTO
Los equipos que están en el rectángulo rojo, son los que vamos a comprobar.
Hacemos lo mismo, pero ahora con el código de equipo 4 y vemos que el resultado es
R.Madrid, el cuál es correcto.
2.- Crea una función DevolverGolesEquipo que reciba el código de un equipo y devuelva el
total de goles a favor y total de goles en contra. Contempla las excepciones oportunas.
Creamos la función con el nombre que se nos indica en el ejercicio e indicamos que la
variable que vamos a insertar va a ser de tipo entero “INT” y que va a devolver lo que
contenga la variable goles en forma de tabla, primero los goles a favor y después los goles en
contra. Empezamos con el cuerpo de la función y declaramos las variables, después con SET
indicamos su valor y en la variable “AFAVOR” donde irán los goles a favor indicamos que
cuando juega como local los goles a favor son los locales y en el segundo “SELECT”, que los
goles pertenecientes a los visitantes cuando el equipo juega como visitante también son a
favor, hacemos lo mismo pero teniendo en cuenta todo esto para los goles en contra y lo
guardamos en la variable “ENCONTRA” insertamos en la variable “GOLES” los valores de los
goles a favor y en contra almacenados en las variables y hacemos el “RETURN”.
COMPROBACION DE FUNCIONAMIENTO
Hacemos la consulta pertinente para ver el contenido de la tabla “PARTIDOS” Aquí vemos los
goles a favor y en contra de el equipo con código de equipo número 4 en el que los goles a
favor están redondeados en verde.
Ejecutamos la función que acabamos de crear, pasándole como parámetro 4 y vemos que el
resultado es el correcto y que los goles a favor son 7 y en contra 2.
COMPROBACION DE FUNCIONAMIENTO
COMPROBACION DE FUNCIONAMIENTO
Creamos un procedimiento con el nombre que se nos indica, el tipo de datos será entero,
pues va a recibir el código del equipo, declaramos las variables y hacemos un “SELECT” con
contador para cada caso que se de, que cumpla la condición que indicamos, Por ejemplo en
la variable “victorias” indicamos las victorias del equipo que serán cuando juega como local,
que los goles locales sean mayores a los visitantes y cuando juega como visitante cuando el
valor de los goles como visitante sea mayor a los goles del equipo local y así sucesivamente
con cada opción, destacar que todas las opciones en el caso de no dar ningún resultado con
“ISNULL” indicamos al final de la instrucción que el valor sea “0” en vez de “NULL”. Por
último el “SELECT” que mostrará los resultados con el nombre en las columnas que
indicamos y con los valores almacenados en cada variables.
Vamos a comprobar a dos equipos el primero con código de equipo número 4 y el segundo
con código 1, aquí vemos que las victorias las tenemos marcadas en verde y el empate que
hay en azul.
Ejecutamos el procedimiento para el equipo con código 4 y vemos que nos cuenta que tiene
dos victorias, ningún empate y ninguna derrota, lo cual es correcto.
Hacemos los mismo pero ahora comprobando el equipo con código 1 y vemos que como
resultado obtenemos una victoria y un empate, lo cuál también es cierto.
·Para terminar muestra la clasificación de los equipos, ordenados por puntos, y mostrando el
nombre del equipo, en vez del código, todos los datos anteriores.
Nota: Utiliza las funciones y procedimientos que has realizado en los ejercicios anteriores.
COMPROBACION DE FUNCIONAMIENTO
Vemos que al ejecutar el procedimiento obtenemos de forma automática la clasificación con
todos los valores que se nos han indicado en el ejercicio y ordenados por la cantidad de
puntos.
El 1 será cuando el equipo1 (Local) haya ganado, la X cuando sea un empate y un 2 cuando el
equipo 2 (visitante) haya ganado.
Puedes crear los procedimientos o funciones que creas oportunos, o usar algunos de los que
ya has realizado.
Creamos el procedimiento con el nombre que nos indica el ejercicio la variable que
declaramos tiene el nombre de “JORNADA” y el tipo de datos que le indicamos que va a
recibir es de tipo enteros “INT” empezamos con el cuerpo del procedimiento y declaramos
las variables en las que indicamos las “EXCEPCIONES” que nos indica el ejercicio la primera
excepción que tratamos es que si la jornada que el número que hemos introducido no se
encuentra en el campo “JORNADA” de la tabla “PARTIDOS” daremos el valor a la variable
“ERROR” de la cadena de texto con el mensaje de que “no se ha disputado dicha jornada”. La
segunda excepción que tratamos es que cuando la Tabla “PARTIDOS” este vacía así se nos
indique para ello seleccionamos el contador de todas las filas y cuando el resultado es cero le
damos el valor a la variable “ERROR2” de la cadena que contiene “que la tabla Partidos se
encuentra vacía”. En la Excepción número tres hacemos lo mismo que en la dos pero con la
tabla “EQUIPOS” y lo guardamos en la variable “ERROR3”; si no se cumple ninguna de estas
opciones “ELSE” hacemos una selección utilizando la función “EQUIPO” que nos daba el
nombre del equipo a partir del código de equipo pasando como parámetros los equipos
locales y visitantes después hacemos con la función “CASE” tres casos diferentes sobre dicho
“SELECT” cuando los goles locales son más que los goles de visitantes el valor será 1 cuando
tienen el mismo valor será X y cuando son mayores los goles visitantes, el valor será 2, Lo
finalizamos con “END” seguido del nombre que llevara la columna en este caso
“RESULTADO” desde la tabla “PARTIDOS” donde compararemos y sacaremos los datos de la
jornada que hemos indicado a la variable “JORNADA” Para finalizar con “SELECT” mostramos
si hemos tenido algún error.
COMPROBACION DE FUNCIONAMIENTO
Hacemos la consulta pertinente en la tabla partidos para ver todos los resultados y a que
jornada pertenecen y ver si los resultados que obtenemos al ejecutar el procedimiento son
ciertos.
Hacemos lo mismo, pero con la consulta número dos y vemos que el resultado que
obtenemos, también es correcto.
EXCEPCION 2
Después de borrar la tabla partidos, comprobamos que está vacía y así es.
Volvemos a ejecutar el procedimiento y vemos que los errores que se nos muestran son que
la tabla partidos está vacía y que no se ha disputado dicha jornada, ya que la tabla partidos
esta vacía y no hay ninguna jornada disputada.
EXCEPCION 3
Volvemos a ejecutar el procedimiento y vemos que los tres errores se nos muestras.