这是错误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;
答案 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
需要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$