2015-06-10 5 views
0

Я создал процедуру с параметром ввода даты. Я хотел бы знать, можно ли установить условие, которое проверяет, является ли входное значение пустым. Я покажу вам мой код:Mysql передать пустое значение процедуре

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; 

Я хотел бы быть в состоянии назвать эту процедуру как с a input like:

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

или с

call xxx.yyy() 

Считаете ли вы, что это возможно? Спасибо

+0

Не возможно в MySql, https://www.google.ge/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=mysql%20procedure% 20default% 20parameter –

+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

+0

Хорошо. Спасибо!! –