Frustrante MySQL CREATE errore PROCEDURA
-
11-09-2019 - |
Domanda
Speriamo che questo sia un bel rapido uno a risolvere.
Ecco il mio file 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 ;
Questa è l'uscita:
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
Quindi, sembra non come il mio parametro argLimit, ma non riesco a capire perché. Devo essere a fare qualcosa di stupido.
Sto usando MySQL 5.0.51.
Grazie.
Soluzione
LIMIT
deve essere una costante e non possono essere parametrizzata all'interno di una procedura o funzione in MySQL. Tuttavia, è possibile risolvere questo problema utilizzando il PREPARE ... EXECUTE ... USING
sintassi.
Si potrebbe finire in cerca un po 'come questo:
...
SET @qry= argQuery;
SET @lmt= argLimit;
PREPARE stmt FROM 'SELECT ... LIKE ? ... LIKE ? ... LIMIT ?';
EXECUTE stmt USING @qry, @qry, @lmt;
DEALLOCATE PREPARE stmt;
Altri suggerimenti
Il link al di Marc Grue commenti .
trucco per fare questo : Prendi il tavolo id del commento e creare un'ancora nella URL.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow