MySQL - Procedimiento Almacenado

 
Vista:
sin imagen de perfil
Val: 3
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Procedimiento Almacenado

Publicado por R_Schubert (2 intervenciones) el 13/05/2018 06:41:27
Buen día,
Estaba realizando este ejercicio sobre Procedimiento Almacenados, pero tengo un error de Sintaxis y no sé cuál es. No soy hábil programando con este tema, agradezco sus colaboraciones:

El ejercicio dice así:

Se quiere guardar la siguiente información de cada jugador: nombre, altura 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) 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;


Y esto es lo que hice después de crear las tablas de SELECCIÓN Y JUGADOR.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DELIMITER $$
CREATE PROCEDURE INSERTAR(IN NOMBRE_S VARCHAR(20))
 
BEGIN
DECLARE ID_SELECCION INT;
 
UPDATE seleccion
SET NUMERO_DE_GOLES_S = 0
WHERE NOMBRE_SELECCION = NOMBRE_S;
 
      SELECT ID INTO ID_SELECCION FROM seleccion
      WHERE NOMBRE_SELECCION = NOMBRE_S;
 
UPDATE jugador
SET NUMERO_DE_GOLES_J = 0
WHERE ID = ID_JUGADOR;
 
END $$
DELIMITER ;


Pero me arroja un error. No logro encontrar el error.

Saludos,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 953
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Procedimiento Almacenado

Publicado por leonardo_josue (414 intervenciones) el 14/05/2018 16:23:10
Hola R_Schubert:

No nos dices cuál es el mensaje de error que te está arrojando MySQL. Es muy importante que siempre que posteés alguna pregunta, incluyas los códigos de error y los mensajes que te arroja la BD's, ya que pueden contener información adicional que te ayuden a identificar en donde está el problema.

A simple vista, te comento que no tienes declarado el objeto ID_JUGADOR, ni como parámetro ni como variable local, y tampoco creo que se trate de el nombre de un campo.

Si continuas con problemas, postea también la estructura de tus tablas para conocer los nombres de tus campos y ver si ahí está el problema.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Procedimiento Almacenado

Publicado por R_Schubert (2 intervenciones) el 14/05/2018 18:24:37
Hola leonardo_josue, gracias por la respuesta:

El error me aparece cuando lo voy a llamar para saber si sí funciona o no, es decir:

CALL INSERTAR('Colombia')

Y el error que me arroja es:
CALL INSERTAR('Colombia') Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.140 sec



¿La sintaxis que utilicé está correcta?


Y las tablas que cree son:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CREATE TABLE jugador(
ID_JUGADOR INT(3),
NOMBRE_JUGADOR VARCHAR(30),
FECHA_DE_NACIMIENTO DATE,
ALTURA INT(4),
PESO VARCHAR (4),
NUMERO_DE_GOLES_J INT(3),
CONSTRAINT pk_j PRIMARY KEY (ID_JUGADOR)
);
 
CREATE TABLE seleccion(
ID_SELECCION INT(3),
NOMBRE_SELECCION VARCHAR(30),
GRUPO VARCHAR(1),
NUMERO_DE_GOLES_S INT(3),
ID_JUGADOR INT(3),
CONSTRAINT pk_s PRIMARY KEY (ID_SELECCION),
CONSTRAINT fk_j FOREIGN KEY (ID_JUGADOR) REFERENCES jugador(ID_JUGADOR)



PD: No sé como ponerlo en formato código aquí.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar