Autor Tema: Procedimiento Almacenado

0 Usuarios y 1 Visitante están viendo este tema.

09 Mayo, 2018, 08:52 pm
Leído 3422 veces

R_Gauss

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 178
  • Karma: +0/-0
  • Sexo: Masculino
Buen día.

Estaba realizando un Procedimiento almacenado en MySQL y me arroja un error. El ejercicio es el siguiente:

Se quiere hacer una base de datos para guardar la información de los equipos de la copa mundial de
futbol. Se quiere guardar la siguiente información de cada jugador: nombre, fecha de nacimiento, altura,
peso y numero de goles que ha hecho realizado en el mundial. Además se quiere guardar la
información de cada selección: nombre, grupo (A, B, C, D, E, F, G, H) y número de goles. Cada jugador se
identifica por un id. Cada selección se identifica por un id.


1. Hacer un Procedimiento Almacenado que dado el nombre de una selección ponga el numero de
goles de la selección en 0 y los goles de sus jugadores también en 0;


Lo que hice fue, crear las tablas y al realizar el Procedimiento Almacenado me aparece error.

Agradezco sus colaboraciones,

Saludos,


09 Mayo, 2018, 09:26 pm
Respuesta #1

manooooh

  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,326
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
Hola

Lo que hice fue, crear las tablas y al realizar el Procedimiento Almacenado me aparece error.

Si no escribís el código o cómo armaste las tablas es imposible conocer lo que intentaste, y por ende saber dónde está el error.

Por favor, ¿podrías adjuntar en una foto lo que intentaste?

Saludos

12 Mayo, 2018, 02:42 am
Respuesta #2

R_Gauss

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 178
  • Karma: +0/-0
  • Sexo: Masculino
Hola Manooooh, gracias por su respuesta:


Adjunto la foto de las tablas creadas y del Procedimiento Almacenado:



Agradezco sus colaboraciones.

Saludos,

13 Mayo, 2018, 12:06 am
Respuesta #3

manooooh

  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,326
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
Hola

¿Qué error te aparece? Yo lo veo bien, salvo quizás por estas observaciones que no sé si afectarán al programa (nunca lo usé, pero sé que si en otros programas lo escribo así me generará error):

  • Las dos tablas están bien.
  • En cuanto al procedimiento:
  • Los signos de $$ al final, ¿no deberían estar después de la palabra DELIMITER y no antes (o probá poniendo los $ $ del principio luego del DELIMITER).
  • En CREATE PROCEDURE, ¿qué significa "IN ..."? ¿No debería ser el tipo de dato entero INT Nombre_s etc?
  • En SELECT ID INTO ID_SELECCION, el ID no está declarado en la tabla seleccion, ¿eso está bien?
  • Por si las dudas en el Procedimiento no declares ID_SELECCION como el mismo que está en la tabla seleccion.

Eso me hace ruido, pero no soy especialista en esto. Acordate de adjuntar el error para ver mejor la situación.

Saludos

13 Mayo, 2018, 02:24 am
Respuesta #4

R_Gauss

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 178
  • Karma: +0/-0
  • Sexo: Masculino
Hola

¿Qué error te aparece? Yo lo veo bien, salvo quizás por estas observaciones que no sé si afectarán al programa (nunca lo usé, pero sé que si en otros programas lo escribo así me generará error):

  • En CREATE PROCEDURE, ¿qué significa "IN ..."? ¿No debería ser el tipo de dato entero INT Nombre_s etc?
  • En SELECT ID INTO ID_SELECCION, el ID no está declarado en la tabla seleccion, ¿eso está bien?

Eso me hace ruido, pero no soy especialista en esto. Acordate de adjuntar el error para ver mejor la situación.

Saludos


Gracías por la respuesta,

El IN... es donde se va a REALIZAR el Procedimiento.

Sin embargo, el Procedimiento me ejecuta sin errores, el error aparece cuando lo voy a llamar:  CALL INSERTAR. Aparece que los argumentos son incorrectos en el PROCEDIMIENTO.

Tomaré en cuenta lo que me dices,

Saludos,

13 Mayo, 2018, 03:50 am
Respuesta #5

manooooh

  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,326
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
Hola

El error aparece cuando lo voy a llamar:  CALL INSERTAR. Aparece que los argumentos son incorrectos en el PROCEDIMIENTO.

Perdón por la insistencia, ¿no es porque pasás como argumento un IN en vez de INT? O sino cuando invocás el procedimiento, que vendría a ser como una función, ¿también no tenés que pasarle el NOMBRE_S? Es decir una vez que armaste el procedimiento para un tipo de dato genérico, cuando la invoques (CALL) tenés que decirle con qué variable específica va a trabajar (CALL INSERTAR(INT NOMBRE_S)).

P.D.: El enunciado dice que "Dado el nombre de una selección invoque al procedimiento que haga...", entonces me parece que la función debería aceptar un VARCHAR, no un INT, por lo que debería ser CALL INSERTAR(VARCHAR Colombia), una cosa así.

Saludos