Frustrante MySQL CREAR error de procedimiento
-
11-09-2019 - |
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.
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"> .
Trickhacer 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