Ich habe mehrere Prozeduren geschrieben und erfolgreich auf meinem Webhost-Server implementiert. Bei dieser Prozedur erhalte ich jedoch den Fehler # 1064. Ich habe es in MySQL Workbench geschrieben und es hat sich nicht ein wenig beschweren. Funktioniert gut auf meinem lokalen Computer.Warum ist diese MySQL-Prozedur-Syntax falsch? Funktioniert auf Testserver
USE mydb
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `temp`(
IN p_page int(11),
IN p_approved varchar(3))
BEGIN
DECLARE v_postsPerPage tinyint;
DECLARE v_totalPostCount int(11);
DECLARE v_listFrom int(11);
SELECT posts_per_page INTO v_postsPerPage FROM diskus_settings;
SELECT COUNT(*) INTO v_totalPostCount FROM diskus_post;
SET v_listFrom = p_page * v_postsPerPage - v_postsPerPage;
SELECT p.post_id, p.user_id, u.username, get_time_diff(p.date) as date, p.ip, p.text, p.parent_post_id, p.approved AS posts
FROM diskus_post p, diskus_user u
WHERE p.user_id = u.user_id
AND p.approved = p_approved
ORDER BY p.date DESC LIMIT v_listFrom, v_postsPerPage;
END $$
Wenn Sie Fehler 1064 (SQL-Syntax-Fehler), wenn es darum, sollte es Ihnen auch einen Schnipsel von SQL werden geben, von wo der Fehler aufgetreten ist. –
Nahe 'v_listFrom, v_postsPerPage; END 'in Zeile 20, aber ich kann nicht sehen, warum .. – Marcus
Wenn Sie Ihre Limit-Klausel dynamisch schreiben möchten, müssen Sie es als Zeichenfolge erstellen und übergeben, um vorzubereiten. MySQL> = 5.5.6 Sie können Variablen in der LIMIT-Klausel verwenden. – nnichols