Mysql将空值传递给过程

时间:2015-06-10 10:26:34

标签: mysql stored-procedures

我创建了一个带有日期输入参数的过程。我想知道是否可以设置检查输入值是否为空的条件。我告诉你我的代码:

<div><img u="image" src="http://example.com/gallery/01" /></div>
<div><img u="image" src="http://example.com/gallery/02" /></div>
<div><img u="image" src="http://example.com/gallery/03" /></div>
<div><img u="image" src="http://example.com/gallery/04" /></div>

.....

CREATE PROCEDURE xxx.yyy(IN l_day DATE)

...

 DECLARE l_today DATE;

我希望能够通过以下输入调用此过程:

IF l_day=NULL THEN  SET l_today=CURDATE();
  ELSE SET l_today=l_day;
  END IF;

call xxx.yyy('2015-07-01')

你认为这是可能的吗?感谢

1 个答案:

答案 0 :(得分:0)

您可以设置条件,但应始终将参数传递给存储过程。

DELIMITER //

CREATE PROCEDURE `yyy`(IN `l_day` DATE)
BEGIN
    DECLARE `l_today` DATE DEFAULT CURDATE();
    IF `l_day` IS NOT NULL THEN
        SET `l_today` := `l_day`;
    END IF;
    SELECT `l_today`;
END//

DELIMITER ;

SET @`l_day` := '2015-07-01';
CALL `yyy`(@`l_day`);

SET @`l_day` := NULL;
CALL `yyy`(@`l_day`);

CALL `yyy`(); -- FAIL

SQL Fiddle demo