Pregunta

Esperamos que esto es una agradable y rápida de resolver.

Aquí está mi archivo .sql:

USE my_db;

DELIMITER $$
CREATE PROCEDURE searchLocation(IN argQuery VARCHAR(32), IN argLimit INT)
BEGIN
  SELECT DISTINCT `suburb`, `postcode`
  FROM `location`
  WHERE `suburb` LIKE '%argQuery%'
  OR `postcode` LIKE 'argQuery%'
  LIMIT argLimit
  ;
END
$$
DELIMITER ;

Esta es la salida:

ERROR 1064 (42000) at line 4: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'argLimit
  ;
END' at line 8

Así que parece que no le gusta mi parámetro argLimit, pero no puedo entender por qué. Debo estar haciendo algo tonto.

Estoy usando MySQL 5.0.51.

Gracias.

¿Fue útil?

Solución

LIMIT debe ser una constante y no puede ser parametrizada dentro de un procedimiento o función en MySQL. Sin embargo, es posible solucionar este problema mediante el uso de la PREPARE ... EXECUTE ... USING sintaxis.

Podría terminar buscando algo como esto:

...
SET @qry= argQuery;
SET @lmt= argLimit;

PREPARE stmt FROM 'SELECT ... LIKE ? ... LIKE ? ... LIMIT ?';
EXECUTE stmt USING @qry, @qry, @lmt;
DEALLOCATE PREPARE stmt;

Otros consejos

El enlace directo a la rel="nofollow"> .

Trick

hacer esto : Obtener el ID de la tabla del comentario y crear un ancla en la URL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top