Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/04/2012, 09:55
hqmlldwg
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
Como concatenar variables en una consulta de procedimiento almacenado?

Hola a todos tengo el siguiente procedimiento almacenado:

DELIMITER $$
CREATE PROCEDURE listadoFORM(IN tform VARCHAR(20))
BEGIN
DECLARE prefi VARCHAR(6);
DECLARE query VARCHAR(100);
SELECT pref_tit INTO prefi FROM tipotabla WHERE nom_tit = tform;
if(prefi!='') THEN
SET @query = CONCAT("SELECT * FROM ",tform," LEFT JOIN actividadfecha ON (cod_",prefi,"=cform_acf) WHERE tform_acf=",tform," ORDER BY fecha_acf DESC;");
PREPARE stmt FROM @query;
EXECUTE stmt;
END IF;
END$$
DELIMITER ;

resulta que cuando hago: "CALL listadoFORM('form2');"

me muestra el siguiente error: "#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (latin1_spanish_ci,IMPLICIT) for operation '='"

probé con:

DELIMITER $$
CREATE PROCEDURE listadoFORM(IN tform VARCHAR(20))
BEGIN
DECLARE prefi VARCHAR(6);
DECLARE prefi2 VARCHAR(6);
DECLARE tabla VARCHAR(20);
DECLARE query VARCHAR(100);
DECLARE query2 VARCHAR(100);
SELECT pref_tit INTO prefi FROM tipotabla WHERE nom_tit = tform;
if(prefi!='') THEN
SET @query = CONCAT("SELECT * FROM "tform" LEFT JOIN actividadfecha ON (cod_"prefi"=cform_acf) WHERE tform_acf="tform" ORDER BY fecha_acf DESC;");
SET @query2=CONVERT(query using latin1) collate latin1_spanish_ci;
PREPARE stmt FROM @query2;
EXECUTE stmt;
END IF;
END$$
DELIMITER ;

Pero me sigue mostrando el mismo error..
Saben a que se debe... ? o en que punto esta mal la sintaxis.?

Espero su respuesta.. Gracias por su colaboración...