簡體   English   中英

在 MySQL 中創建存儲過程時出錯,Error#1064

[英]Error on creating a stored procedure in MySQL, Error#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 ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM