Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como concatenar variables en una consulta de procedimiento almacenado?

Estas en el tema de Como concatenar variables en una consulta de procedimiento almacenado? en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/04/2012, 09:55
 
Fecha de Ingreso: mayo-2010
Mensajes: 2
Antigüedad: 14 años, 6 meses
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...
  #2 (permalink)  
Antiguo 12/04/2012, 13:57
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 13 años, 5 meses
Puntos: 42
Respuesta: Como concatenar variables en una consulta de procedimiento almacenado?

Hola hqmlldwg,

La primera pregunta es: ¿Qué versión de MySQL estás ejecutando?

Al parecer el procedimiento almacenado tiene asignado un collation distinto al collation de la columna `nom_tit`, así que mi primera recomendación es revisar el collation de la columna `nom_tit` que parece estar establecido en latin1_swedish_ci y debería ser latin1_spanish_ci por lo que describe el error.

Etiquetas: concatenar, join, procedimiento, query, select, tabla, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:17.