Frustrierend MySQL VERFAHREN Fehler CREATE
-
11-09-2019 - |
Frage
Hoffentlich ist das ein schönes schnell ein zu lösen.
Hier ist meine SQL-Datei:
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 ;
Dies ist die Ausgabe:
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
So scheint es nicht meine Parameter argLimit mögen, aber ich kann nicht herausfinden, warum. Ich muss etwas zu tun dumm.
Ich bin mit MySQL 5.0.51.
Danke.
Lösung
LIMIT
muss eine Konstante sein und kann nicht innerhalb einer Prozedur oder Funktion in MySQL parametrisiert werden. Allerdings ist es möglich, dieses Problem zu umgehen, indem Sie die PREPARE ... EXECUTE ... USING
Syntax.
Es könnte etwas wie die am Ende aussehen:
...
SET @qry= argQuery;
SET @lmt= argLimit;
PREPARE stmt FROM 'SELECT ... LIKE ? ... LIKE ? ... LIMIT ?';
EXECUTE stmt USING @qry, @qry, @lmt;
DEALLOCATE PREPARE stmt;
Andere Tipps
Der direkte Link zu den Marc Grue Kommentare .
Trick diese zu tun: Holen Sie sich die Tisch-ID des Kommentars, und erstellen Sie einen Anker in der URL.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow