Фильтрация MySQL по возможному нулевому значению


Я пишу хранимую процедуру mysql, которая принимает один параметр datetime. он использует его в инструкции select как таковой..

select *
from table
where date >= @datefrom or @datefrom is null

Когда я пишу запросы t-sql, это обычно делает трюк, но он, кажется, не работает с mysql.

Я также пробовал другие варианты, такие как

where date >= ifnull(@datefrom, date)

А также

where ((date >= @datefrom and @datefrom is not null) or (@datefrom is null))
Но я не получаю результатов, которых ожидаю.. Может ли кто - нибудь пролить на это свет?

Определение процедуры как такой..

CREATE DEFINER=`root`@`%` PROCEDURE `prc_xxxxxx`(datefrom datetime)
BEGIN

select * from table
where date >= @datefrom or @datefrom is null

END
А потом я бы позвонил вот так..
call prc_xxxxxx ('2012-07-04 00:00:00')

Или

call prc_xxxxx (null)
1 2

1 ответ:

Как уже упоминалось, символ @ используется для переменных сеанса , а не для сохраненных рутинных параметров-они должны быть незафиксированными. Например:

CREATE PROCEDURE `proc_IN` (IN var1 INT)  
BEGIN  
    SELECT var1 + 2 AS result;  
END//

Этот пример был взят из этого учебника.