【发布时间】:2019-03-17 09:10:58
【问题描述】:
我正在尝试编写一个存储过程,其中我使用 2 个表来根据条件获取数据,但它给出了错误。
我的 SP 是:
DELIMITER //
CREATE PROCEDURE select_notifications(IN datePosted DATETIME,IN recipientId INT,IN packageId INT,IN accountId INT)
BEGIN
IF datePosted < NOW() THEN
SELECT tn.subject_line,tn.message,tn.message_type FROM track_notifications AS tn WHERE tn.package_id=packageId AND tn.recipient_id=recipientId AND tn.account_id=accountId AND tn.date_posted = datePosted;
ELSE IF datePosted > NOW()
SELECT subject_line,message,message_type FROM track_notifications_new WHERE package_id=packageId AND recipient_id=recipientId AND account_id=accountId AND date_posted = datePosted;
END IF;
END
END //
Mysql 错误:
以下查询失败:“CREATE DEFINER=
root@localhost程序select_track_notifications(INdatePostedDATETIME, INrecipientIdINT,输入packageIdINT,输入accountIdINT) 不是 DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN IF datePosted NOW() THEN SELECT subject_line,message,message_type FROM track_notifications_new WHERE package_id=packageId AND recipient_id=recipientId AND account_id=accountId AND date_posted = datePosted;万一;结束”
【问题讨论】:
-
你在
ELSE IF条件之后忘记了THEN... -
我也已经尝试过了,但是得到了同样的错误,这就是为什么我在那个错误之后删除了
-
你的这个错误是什么?
-
更新了我的问题,请检查一次。
-
每个 if 都必须有 then 和 end if(你的 else if 没有)并且你可能没有设置分隔符dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html