MySql存储函数返回null或返回值不起作用

时间:2019-07-02 17:56:12

标签: mysql sql

我想创建一个存储函数,如果来宾在特定日期进行了预订,它将返回来宾的电子邮件,如果没有,则返回null。我想使用pID和begindate作为存储的功能。已预定开始日期为0000-00-00的房间。我什至无法创建存储函数,它已经给了我错误。怎么了?我需要添加什么才能退回邮件?  我该怎么做?

我当前的数据库:

pID              |begindate    | enddate     |  mail 
------------------------------------------------------
COD12            | 2014-07-15  | 2014-07-18  | z@yahoo.com
COD400           | 2014-07-20  | 2014-07-21  | q@hotmail.com
KOD12            | 0000-00-00  |             | 
COD600           | 2014-07-04  | 2014-07-12  | h@gmail.com
MOD10            | 0000-00-00  |             | 

所以我想运行存储的函数:

SELECT Stored_Function('COD12','2014-07-15')

这将返回:

| Stored_Function('COD12','2014-07-15')     |     
------------------------------------------
| 2014-07-15                                |

这将返回Null:

SELECT Stored_Function('COD12','2014-07-16')
| Stored_Function('COD12','2014-07-16')     |     
------------------------------------------
| Null                                      |

我尝试过但没有奏效的东西:

DELIMITER $$

CREATE FUNCTION Stored_Function(i_pId int, begindate DATE) RETURNS DATE
BEGIN
 DECLARE v_date DATE;

  SET v_date = 
 (
  SELECT begindate 
    FROM tab
   WHERE pId = i_pId ;
 );

  IF v_date = '0000-00-00' THEN
    SET mail = NULL;
  END IF;

  RETURN mail;
END 

$$

DELIMITER ;

0 个答案:

没有答案