Php 无法创建MySQL存储过程
我正在尝试创建一个存储过程:Php 无法创建MySQL存储过程,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,我正在尝试创建一个存储过程: delimiter // CREATE PROCEDURE update_counter BEGIN UPDATE bookmark bk, (SELECT count(Distinct user_bookmarks.user_id) AS bookmark_counter, bookmark_id FROM user_bookmarks LEFT JOIN bookmarks ON user_bookmarks.bookmark_id = boo
delimiter //
CREATE PROCEDURE update_counter
BEGIN
UPDATE bookmark bk,
(SELECT count(Distinct user_bookmarks.user_id) AS bookmark_counter, bookmark_id
FROM user_bookmarks
LEFT JOIN bookmarks ON user_bookmarks.bookmark_id = bookmarks.id
GROUP BY user_bookmarks.bookmark_id
) t
set bk.counter = t.bookmark_counter
where bk.id = t.bookmark_id
END //
但这给了我一个错误
1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在第2行“开始更新书签bk,选择countDistinct user_bookmarks.user_id AS”附近使用的正确语法有何想法?这里怎么了
您必须在标题中定义IN和OUT参数。如果没有参数,则必须添加
即使没有指定的输入和输出更新计数器,过程名称也应以结尾
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“END//”附近使用的正确语法line@HituBansal你必须补充;其中bk.id=t.bookmark_idStill error之后:您的SQL语法中有一个错误;检查与MySQL服务器版本对应的手册,以了解第行“//”附近要使用的正确语法11@HituBansal如果你有一个错误很清楚地说MySQL?@ Rigel1121:我从你的一些问题中看到你正在设置标题的标题。案例-我认为社区已经决定这里更倾向于判决案例。若你们感兴趣的话,已经在Meta上讨论过了。它对我有用。你们能解释一下结尾吗;//你为什么使用;在EndWell之后;不需要在结束后添加,但添加并没有坏处,您可以说这是我长期以来一直在做的一个老习惯:最佳实践是您应该始终使用终止每个命令;,就像您案例中的查询一样。
delimiter //
CREATE PROCEDURE update_counter()
BEGIN
UPDATE bookmark bk,
(SELECT count(Distinct user_bookmarks.user_id) AS bookmark_counter, bookmark_id
FROM user_bookmarks
LEFT JOIN bookmarks ON user_bookmarks.bookmark_id = bookmarks.id
GROUP BY user_bookmarks.bookmark_id
) t
set bk.counter = t.bookmark_counter
where bk.id = t.bookmark_id;
END//
delimiter;
delimiter //
CREATE PROCEDURE update_counter()
BEGIN
UPDATE bookmark bk,
(SELECT count(Distinct user_bookmarks.user_id) AS bookmark_counter, bookmark_id
FROM user_bookmarks
LEFT JOIN bookmarks ON user_bookmarks.bookmark_id = bookmarks.id
GROUP BY user_bookmarks.bookmark_id
) t
set bk.counter = t.bookmark_counter
where bk.id = t.bookmark_id;
END;//
delimiter ;