0

我正在尝试使用 IF 编写一个函数,但出现错误

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 8 行代码 1064 的 '' 附近使用

这就是功能。

DELIMITER $$

DROP FUNCTION IF EXISTS `my_fun` $$
CREATE FUNCTION `my_fun` (nid INT) RETURNS VARCHAR(200)
BEGIN
DECLARE abc varchar(100);
SELECT foo INTO abc FROM my_table WHERE bar = nid;
IF abc = ''
THEN
SELECT foo INTO abc FROM my_table WHERE bar = -1;
RETURN abc;
END $$

DELIMITER ;

我不确定这里的语法是什么,我也试过了IF abc IS NULL。我只想检查第一个选择语句是否返回空值然后执行另一个语句。

4

2 回答 2

2

你缺少END IF陈述。

您的代码应该是:

DELIMITER $$

DROP FUNCTION IF EXISTS `my_fun` $$
CREATE FUNCTION `my_fun` (nid INT) RETURNS VARCHAR(200)
BEGIN
DECLARE abc varchar(100);
SELECT foo INTO abc FROM my_table WHERE bar = nid;
IF abc = ''
THEN
SELECT foo INTO abc FROM my_table WHERE bar = -1;
END IF;
RETURN abc;
END $$

DELIMITER ;
于 2012-09-04T07:06:45.637 回答
0

首先,您缺少 END IF 语句,其次为什么不在 IF 条件语句中执行以下操作:

IF (SELECT foo FORM my_table WHERE bar = nid) IS NULL
THEN
SELECT foo INTO abc FROM my_table WHERE bar = -1;
END IF

于 2012-09-04T07:18:40.420 回答