
13/07/2012, 11:10
|
| | Fecha de Ingreso: octubre-2011 Ubicación: Niquitao
Mensajes: 28
Antigüedad: 13 años, 5 meses Puntos: 0 | |
Respuesta: Pasar nombre de Campo o tabla a una Variable de Usuario en una consulta de Que pena nuevamente a los 2, yo estaba ejecutando mal el stored Procedure, Pero si estaba Correcto, solo que no me fije y yo estaba ejecutando mal la sentencia dentro del subquery SELECT grade.* FROM stream INNER JOIN grade ON stream.claveprimaria = grade.idgrade
WHERE stream.idstream IN (SELECT * FROM stream order by idstream DESC LIMIT 1)
Como el asterisco afecta la consulta por eso me estaba saliendo este error: Operand should contain 1 column(s) Cuando tiene que ser así: SELECT grade.* FROM stream INNER JOIN grade ON stream.claveprimaria = grade.idgrade
WHERE stream.idstream IN (SELECT idstream FROM stream order by idstream DESC LIMIT 1)
Por lo tanto aqui les dejo los 2 ejemplos de como hice este Stored Procedure: Sin Subquery pero asignandole la consulta a una variable:
DELIMITER $$
DROP PROCEDURE IF EXISTS `leer` $$
CREATE DEFINER=`database` PROCEDURE `readdata`(IN tabla VARCHAR(100), IN idcampo VARCHAR(50))
BEGIN
DECLARE lastregistry INT;
SET lastregistry = (SELECT idstream FROM stream order by idstream DESC LIMIT 1);
SET @snt = CONCAT('SELECT ' ,tabla,'.* FROM stream INNER JOIN ',tabla ,' ON stream.claveprimaria = ',tabla,'.',idcampo,
' WHERE stream.idstream = ', lastregistry);
PREPARE sent FROM @snt;
EXECUTE sent;
DEALLOCATE PREPARE sent;
END $$
DELIMITER ; Con Subquery pero sin asignarle la consulta a una variable
DELIMITER $$
DROP PROCEDURE IF EXISTS `lastoperation` $$
CREATE DEFINER=`database` PROCEDURE `readdata`(IN tabla VARCHAR(100), IN idcampo VARCHAR(50))
BEGIN
SET @snt = CONCAT('SELECT ' ,tabla,'.* FROM stream INNER JOIN ',tabla ,' ON stream.claveprimaria = ',tabla,'.',idcampo,
' WHERE stream.idstream = ( SELECT idstream FROM stream order by idstream DESC LIMIT 1)');
PREPARE sent FROM @snt;
EXECUTE sent;
DEALLOCATE PREPARE sent;
END $$
DELIMITER ;
Estoy muy agradecido por sus ayudas.
Última edición por elpropiopato23; 13/07/2012 a las 11:48 |