MySQL - Rutine MySQL no devuelve lo que quiero..

 
Vista:

Rutine MySQL no devuelve lo que quiero..

Publicado por Jaime (4 intervenciones) el 01/04/2013 22:42:53
Hola, tengo problema con la siguiente rutina,

1
2
3
4
5
6
7
8
9
10
CREATE DEFINER=`automovi`@`localhost` PROCEDURE `agregar_marca`(IN `marca` VARCHAR(255))
    READS SQL DATA
BEGIN
declare is_idmarca int;
 
SELECT count(idmarca) INTO is_idmarca FROM marca WHERE marca = marca LIMIT 1;
IF (is_idmarca=0) THEN
INSERT marca values('',marca);
END IF;
END


No entiendo porque no funciona. solamente inserta cuando no hay nada en la tabla,

pero yo no quiero eso quiero hacer que si encuentra la marca en los registros la inserte, si no
no haga nada, pero no funciona :S,

que podria ser?
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
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Rutine MySQL no devuelve lo que quiero..

Publicado por xve (1151 intervenciones) el 02/04/2013 07:26:31
Hola Jaime nos puedes indicar cual es la estructura de la tabla marca?
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

Rutine MySQL no devuelve lo que quiero..

Publicado por Jaime (4 intervenciones) el 03/04/2013 14:25:30
Hola xve, la estructura es esta

CREATE TABLE IF NOT EXISTS `automovi_AutomovilesMendez2`.`marca` (
`idMarca` INT(11) NOT NULL AUTO_INCREMENT ,
`marca` VARCHAR(255) NOT NULL ,
PRIMARY KEY (`idMarca`) )
ENGINE = InnoDB
AUTO_INCREMENT = 89
DEFAULT CHARACTER SET = utf8
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
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Rutine MySQL no devuelve lo que quiero..

Publicado por xve (1151 intervenciones) el 03/04/2013 16:21:50
Hola Jaime prueba a poner así:
1
INSERT marca values(null,marca);


Coméntanos, ok?
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

Rutine MySQL no devuelve lo que quiero..

Publicado por Jaime (4 intervenciones) el 03/04/2013 19:04:46
DELIMITER //
CREATE PROCEDURE `agregar_marca`(IN `marca` VARCHAR(255))
BEGIN
DECLARE is_idmarca int;
SELECT count(idmarca) INTO is_idmarca FROM marca WHERE marca = marca LIMIT 1;
IF (is_idmarca=0) THEN
INSERT marca values(null,marca);
END IF;
END
//
DELIMITER ;

No pasa nada, sabes lo que es parece que cuenta todos los registros de la tabla, no solo el WHERE que le doi.
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

Rutine MySQL no devuelve lo que quiero..

Publicado por Jaime (4 intervenciones) el 06/04/2013 00:22:07
Nadie sabe?
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
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Rutine MySQL no devuelve lo que quiero..

Publicado por xve (1151 intervenciones) el 06/04/2013 11:03:59
Haz una prueba Jaime... cambia el nombre de la variable para que no se llame igual que el campo de la base de datos.... algo así:

Al hacer el cambio, creo que he visto el error... puede ser que sea:
SELECT count(idmarca) AS is_idmarca
en vez de
SELECT count(idmarca) INTO is_idmarca

1
2
3
4
5
6
7
8
9
10
11
DELIMITER // 
CREATE PROCEDURE `agregar_marca`(IN `in_marca` VARCHAR(255))
BEGIN
DECLARE is_idmarca int;
SELECT count(idmarca) AS is_idmarca FROM marca WHERE marca = in_marca LIMIT 1;
IF (is_idmarca=0) THEN
INSERT marca values(null,marca);
END IF;
END
// 
DELIMITER ;

Coméntanos, ok?
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