Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/07/2012, 08:23
socialk
 
Fecha de Ingreso: octubre-2011
Ubicación: Chile
Mensajes: 9
Antigüedad: 12 años, 7 meses
Puntos: 0
problema SP, con un IN dentro de un cursor

Espero ser lo más claro posible... tengo un SP el cual recibe un parametro por ejemplo

call spTest('10,11,12')

dentro del procedimiento tengo una consulta del tipo select * from tabla where id IN (parametro), al parecer MySQL le agrega caracteres de escape por eso no funciona, si lo hago con CONCAT, funciona, pero no puedo utilizar CONCAT dentro de un Cursor. pongo algo de codigo

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE DEFINER=`root`@`localhost` PROCEDURE `spListPrice`(
  4.         IN idInstrument VARCHAR(500),
  5.         IN quality CHAR(3)
  6.     )
  7.     DECLARE valores varchar(500);
  8.     DECLARE queryt VARCHAR(1000);
  9.     DECLARE _pkIntradayTransaction INTEGER;
  10.     DECLARE done INT DEFAULT 0;
  11.     DECLARE cTag CURSOR FOR
  12.         SELECT
  13.             max(pkIntradayTransaction)
  14.         FROM
  15.             tbIntradayTransactions
  16.         WHERE
  17.             fkInstrument IN (SELECT
  18.                 pkInstrument
  19.             FROM
  20.                 tbInstruments
  21.             WHERE
  22.                 fkInstrument IN (valores)) AND datetimeLastPrice <= DATE_SUB(NOW(),INTERVAL 15 MINUTE)
  23.         GROUP BY fkInstrument;
  24.  
  25.         DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;

luego necesito hacer algo como

Código MySQL:
Ver original
  1.             max(pkIntradayTransaction)
  2.         FROM
  3.             tbIntradayTransactions
  4.         WHERE
  5.             fkInstrument IN (SELECT
  6.                 pkInstrument
  7.             FROM
  8.                 tbInstruments
  9.             WHERE
  10.                 fkInstrument IN (valores)) AND datetimeLastPrice <= DATE_SUB(NOW(),INTERVAL 15 MINUTE)
  11.         GROUP BY fkInstrument;

lo que sucede aquí es que no devuelve nada, como dije antes, creo que MySQL hace algo como

SELECT * FROM table WHERE id IN (`10,11,12`); al agregar eso, lo toma como si fuera un solo STRING.

ojalá alguien pudiera ayudarme, gracias!