我需要选择今天的第一个航班。为此,我使用
delimiter//
CREATE function get_flightID(flightident())
returns int
begin
return (SELECT * FROM flightdep where depday = dayofweek(CURDATE()) ORDER BY depTime asc LIMIT 1;)
end//
delimiter;
但这不起作用。当我执行此操作时,我收到有关MySQL语法的错误。
17:50:50)end //分隔符错误代码:1064。您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在结尾//分隔符附近使用'在第1行0.000秒
我真的猜测在我的第一行中使用了什么,我尝试了我能想到的一切。
CREATE function get_flightID(flightident())
答案 0 :(得分:1)
首先,您将返回select *
,这可能会有多个列。其次,你有一个不必要的分号。尝试这样的事情:
delimiter//
CREATE function get_flightID(flightident())
returns int
begin
return (SELECT deptime
FROM flightdep
where depday = dayofweek(CURDATE())
ORDER BY depTime asc
LIMIT 1
)
end//
delimiter;
答案 1 :(得分:0)
您尝试从函数返回结果集(即SELECT *...
),但声明它返回int
。
你想要这样的东西:
DELIMITER $$
DROP FUNCTION IF EXISTS get_flightID $$
CREATE function get_flightID()
returns int
reads sql data
begin
declare result int;
SELECT flightID INTO result
FROM flightdep
where depday = dayofweek(CURDATE())
ORDER BY depTime asc LIMIT 1;
return result;
end$$
DELIMITER ;