MySQL にストアド関数があります。
CREATE FUNCTION `login_count`(o INT, start_date DATE, end_date DATE) RETURNS INT
READS SQL DATA
BEGIN
DECLARE total_count INT;
SELECT COUNT(*) INTO total_count FROM logins as l WHERE `order_id` = o && modified BETWEEN start_date AND end_date;
RETURN total_count;
END
かなり基本的なもので、ID、開始日、終了日を受け取り、その日付範囲のログイン数を返します。実行するたびに、0が返されます。where句の日付セクションを削除しない限り。次に、実際の数値を返します。または、保存された関数に手動で日付を入れるだけでも機能します...したがって、日付の問題ではありませんが、パラメーターリストを介して日付を提供している場合にのみ、それは気に入りません。
これが起こる原因について何か考えはありますか?格納された関数に手動で日付を入れることができ、それが機能するという事実は本当に私を悩ませています。ここで台無しになる可能性のある多くのことが起こっているわけではないので、次に何をしようか迷っています。
また、保存された関数/手順をデバッグする方法はありますか。0 が返ってきましたが、これをデバッグして何が起こっているのかを調べる方法はありますか?