无法创建 MySQL 存储过程
Not able to create a MySQL stored procedure
我正在尝试创建一个存储过程:
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 - 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 'BEGIN UPDATE bookmark bk, (SELECT count(Distinct user_bookmarks.user_id) AS' at line 2 Any idea? What is wrong here?
您必须在 header 中定义 IN 和 OUT 参数。如果您没有参数,则必须添加 ()
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;
过程名称应以 ()
结尾,即使没有指定 in
和 out
update_counter()
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 //
但这给我一个错误
1064 - 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 'BEGIN UPDATE bookmark bk, (SELECT count(Distinct user_bookmarks.user_id) AS' at line 2 Any idea? What is wrong here?
您必须在 header 中定义 IN 和 OUT 参数。如果您没有参数,则必须添加 ()
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;
过程名称应以 ()
结尾,即使没有指定 in
和 out
update_counter()
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 ;