
01/09/2010, 11:02
|
| | Fecha de Ingreso: febrero-2009
Mensajes: 101
Antigüedad: 16 años Puntos: 0 | |
Procedimientos Almacenados Buenas Tardes Compañeros de ForosdelWeb !¡!¡
Mi pregunta es la siguiente:
Quiero desarrollar un procedimiento que me permita determinar si un registro existe en la base de datos... y dependiendo de si existe o no.. hacer un insert y un update de dicho registro... En la web encontre el siguiente ejemplo que he adaptado:
Yo envio por parametro la variable de vcodigo (codigo del producto), vnombre(nombre del producto) y finalmente envio tambien vtabla (el nombre de la tabla)
BEGIN
DECLARE existe bool;
select count(*)> 1 into existe from grupo where grupo.codigo = vcodigo;
if existe then
UPDATE grupo set nombre = vnombre where codigo= vcodigo;
else
INSERT INTO grupo (codigo, nombre) values (vcodigo,vnombre );
end if;
end;
Este prodecimiento funciona bien ... pero como habran notado no utilizo el parametro vtabla por que cuando llamo al procedimiento asi: call grupo('22', 'grupo','prueba n° 2')
donde codigo = 22
tabla = grupo
nombre = prueba n° 2
Pero si en lugar de colocar la variable de vtabla directamente no me funciona... Me dice que la tabla vtabla no existe... aparentemente no toma como parametro el nombre dela tabla... Entonces mi duda es saber como pasar por parametro el nombre de la tabla?¿
En la web consegui una forma de hacerlo... que es la siguiente:
set @tabla = concat ( 'select count(*) into ', existe, ' from ', vtabla, ' where grupo.codigo =', vcodigo );
set @tabla = concat ( 'select count(*) from ', vtabla, ' where codigo =', vcodigo );
PREPARE sentencia FROM @tabla;
execute sentencia;
Pero en este caso me sale el siguiente error : [Error] 1064 - Usted tiene un error en la sintaxis SQL, consulte el manual correspondiente a su versión del servidor MySQL para la sintaxis derecho al uso cerca 'NULL' en la línea 1
Sino utilizo la varianble existe me funciona chevere ... Pero la necesito para poder realizar la condición ¡!¡!
Muchas Gracias...
Saludos y Éxito!¡!¡
__________________ Fiorellita
Última edición por fiorella3247; 01/09/2010 a las 11:17 |