如何解决在MySQL中创建存储过程时出错,错误#1064
我很难创建存储过程。 我曾尝试根据堆栈溢出的其他条目来更改某些内容,但这没有帮助。
select version();
返回5.7.31-0ubuntu0.16.04.1
以防万一。
这是查询:
DELIMITER $$
CREATE
PROCEDURE forceSubscribeToNode(IN node_id_var INT)
BEGIN
INSERT
INTO
xf_forum_watch(
user_id,node_id,notify_on,send_alert,send_email
)
SELECT
user_id,node_id_var AS node_id,"thread" AS notify_on,1 AS send_alert,1 AS send_email
FROM
xf_user
WHERE
user_group_id NOT IN(
1,18,40
)
ON DUPLICATE KEY
UPDATE
send_alert = 1,send_email = 1,notify_on = CASE WHEN notify_on IS NULL OR notify_on = '' THEN 'thread' ELSE notify_on END
END $$
DELIMITER ;
这是错误:
#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 'END' at line 30
(第18行是“ send_email = 1”,
对于上下文,搜索引擎和将来的参考:
这将用于论坛软件Xenforo 2.1,以强制用户订阅某些节点,例如类别和子论坛。
解决方法
所以我似乎忘记了在第一个 ;
之后添加一个END
空格
DELIMITER $$
CREATE
PROCEDURE forceSubscribeToNode(IN node_id_var INT)
BEGIN
INSERT
INTO
xf_forum_watch(
user_id,node_id,notify_on,send_alert,send_email
)
SELECT
user_id,node_id_var AS node_id,"thread" AS notify_on,1 AS send_alert,1 AS send_email
FROM
xf_user
WHERE
user_group_id NOT IN(
1,18,40
)
ON DUPLICATE KEY
UPDATE
send_alert = 1,send_email = 1,notify_on = CASE WHEN notify_on IS NULL OR notify_on = '' THEN 'thread' ELSE notify_on END ;
END $$
DELIMITER ;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。