问题描述
我很难创建存储过程。 我曾尝试根据堆栈溢出的其他条目来更改某些内容,但这没有帮助。
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 ;