2

単一の日時パラメーターを取る mysql ストアド プロシージャを作成しています。それは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)
4

1 に答える 1

0

既に述べたように、@ 記号は保存されたルーチン パラメータではなく、セッション変数に使用されます。例えば:

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

この例は、このチュートリアルから取得したものです。

于 2012-07-04T09:17:34.617 に答える