mysql存储功能不起作用

时间:2015-03-08 16:35:45

标签: mysql sql

我需要选择今天的第一个航班。为此,我使用

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())

2 个答案:

答案 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 ;