我在mysql函数中有错误

时间:2017-08-25 09:43:22

标签: mysql function date

这是错误1064,借款人是表格,dataofissue是发行日期,rollno是借款人表格中的滚动否:

create function get_info(roll in integer,name in varchar(20))
    -> return boolean
    -> begin
    -> set @date1=curdate()
    -> set @date2:=select dataofissue from borrower where rollin=roll and nameofbook=name
    -> select DATEDIFF(@date1,@date2) into @date3 from borrower
    -> select @date3
    -> if(@date3>15)
    -> return (false)
    -> else
    -> return (true)
    -> end;

1 个答案:

答案 0 :(得分:0)

要将SELECT查询用作值,您必须将其放在括号中:

set @date2:=(select dataofissue from borrower where rollin=roll and nameofbook=name)

或者您可以使用INTO分配变量:

select dataofissue INTO @date2 from borrower where rollin=roll and nameofbook=name

此外,在函数中的每个语句后都需要;。要防止它立即结束函数定义,必须在定义函数之前使用DELIMITER指令,并使用该分隔符结束函数。

IF需要THENEND IF

您无法为功能参数指定INOUTINOUT,这仅适用于程序。

DELIMITER $
create function get_info(roll integer, name varchar(20)) return boolean
begin
    set @date1=curdate();
    set @date2:=(select dataofissue from borrower where rollin=roll and nameofbook=name);
    select DATEDIFF(@date1,@date2) into @date3;
    if (@date3>15)
    then return (false);
    else return (true);
    end if;
end$