Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/08/2012, 18:43
KaozC9
 
Fecha de Ingreso: abril-2010
Ubicación: Chile
Mensajes: 76
Antigüedad: 14 años
Puntos: 3
Respuesta: Error con procedimiento almacenado

Me respondo a mi mismo y a cualquier persona que tenga este problema

La clausula LIMIT en versiones de MySQL anteriores a 5.5.6, no acepta otro tipo de datos que no sean constantes de tipo entero. Recién en la versión 5.5.6 se pueden usar variables y otras cosas.

Cita:
Noted in 5.5.6, 6.0.14 changelogs.

Within stored programs, LIMIT clauses now accept integer-valued
routine parameters or local variables as parameters.
Pero existe una solución para versiones anteriores a esta

Código SQL:
Ver original
  1. DROP PROCEDURE IF EXISTS get_product_range $$
  2. CREATE PROCEDURE get_product_range (
  3. IN _START INTEGER,
  4. IN _LIMIT INTEGER
  5. )
  6. BEGIN
  7. PREPARE STMT FROM
  8. " SELECT *
  9. FROM products LIMIT ?,? ";
  10. SET @START = _START;
  11. SET @LIMIT = _LIMIT;
  12. EXECUTE STMT USING @START, @LIMIT; /* Known bug in mySQL5 - exists as feature req. */
  13. END $$