Ver Mensaje Individual
  #9  
Antiguo 17-10-2007
VRO VRO is offline
Miembro
 
Registrado: abr 2004
Posts: 230
Reputación: 21
VRO Va por buen camino
Parece que el procedimiento almacenado y yo no nos vamos a llevar muy bien.


El procedimiento almacenado es el siguiente aunque ya os lo he detallado.

Código SQL [-]

DELIMITER $$
DROP PROCEDURE IF EXISTS `aytosantillana`.`prueba` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `prueba`(IN f1 char(20), IN f2 char(20))
BEGIN

SELECT puertos.tag,puertos.dispositivo as disp,valores.fecha,case puertos.numpuerto when 0 then valores.A0 when 1 then valores.A1 when 2 then valores.A2 when 3 then valores.A3 when 3 then valores.A3 when 4 then valores.A4 when 5 then valores.A5 end as valor from equipos,puertos,valores where ((valores.idEquipo=puertos.idEquipo) and (equipos.idEquipo=puertos.idEquipo) and (equipos.idEquipo=valores.idEquipo) and (valores.fecha between f1 and f2 )and (puertos.dispositivo<>'Contador') and (puertos.dispositivo<>'Alimentacion') and (puertos.dispositivo<>'Temperatura') and (puertos.tag<>'')) having (valor<>'') order by puertos.dispositivo asc,valores.idEquipo asc,puertos.numpuerto asc, fecha asc;

END $$
DELIMITER ;







Bueno cuando ejecuto el procedimiento almacenado desde Mysql no me da ningún problema lo hago de la siguiente forma:


Código SQL [-]

call prueba (valorf1, valorf2);





Ahora bien cuando intento sacar el resultado desde Delphi ( para la conexion a la base de datos Mysql utilizo componentes Zeos), atraves de un Zquery de esta forma:

Código:
 Zquery.close;
 Zquery.sql.text:='call prueba(valorf1, valorf2)';
 Zquery.open;
Me dice: 'Can't return a result set in the given context'


Si por el contrario hago la llamada a traves de un componente ZStoredProcedure de la siguiente forma:

Código:
 
  Z1.StoredProcName := 'prueba';
  Z1.ParamByName('f1').AsString := DatetimeToStr(StrTodatetime(datetostr(fecha.Date) + ' ' +'00:00:00'));
  Z1.ParamByName('f2').AsString := DatetimeToStr(StrTodatetime(datetostr(fecha.Date) + ' ' +'23:59:59'));
  z1.ExecProc;
Para este caso el mensaje de error es: 'Unsoported operation';

Así que aqui estoy que ya no se para donde tirar una ayudta, por favor.

Gracias
Responder Con Cita