这给出了错误 1064,borrower 是一个表,dataofissue 是发行日期,rollno 是borrower 表中的roll no:
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;
最佳答案
为了使用 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
需要 THEN
和 END IF
。
您不能为函数参数指定 IN
、OUT
或 INOUT
,这仅适用于过程。
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$
关于mysql - 我的 mysql 函数有一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45878666/