我一直在与这个争斗太久,所以我来这里寻求帮助......
我有一个MySQL存储过程,我想执行以下操作:
给定给定记录的'id'和'username'
我尝试了以下内容:
BEGIN
DECLARE doCreate INT;
DECLARE doUpdate INT;
SELECT COUNT(*) INTO doCreate FROM app_user WHERE id=1;
IF (doCreate > 0) THEN
SELECT COUNT(*) INTO doUpdate FROM app_user WHERE id=1 AND username='other';
END IF
IF(doCreate = 0) THEN ---SYNTAX ERROR ON THIS LINE---
SELECT 'CREATE';
ELSE IF(doUpdate = 0) THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END IF
END
我也尝试用case语句替换if-elseif-else块但得到相同的结果......
CASE ---ERROR ON THIS LINE---
WHEN doCreate = 0 THEN
SELECT 'CREATE';
WHEN doUpdate = 0 THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END
任何帮助都会受到赞赏 - 我相信有更好的方法可以做到这一点。
答案 0 :(得分:2)
我认为您需要使用END IF
终止;
,内部ELSEIF
应该是一个字。否则,需要另一个END IF
,但找不到。
IF (doCreate > 0) THEN
SELECT COUNT(*) INTO doUpdate FROM app_user WHERE id=1 AND username='other';
END IF; /* terminate with ; */
IF(doCreate = 0) THEN
SELECT 'CREATE';
ELSEIF(doUpdate = 0) THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END IF; /* terminate with ; */
查看MySQL IF/ELSE
syntax reference了解各种用法示例。