Я пытаюсь создать процедуру, которая будет проверять, зарегистрирован ли уже пользователь (он получил сеанс, и я проверяю, было ли его последнее действие более 15 минут назад). Моя процедура выглядит так:
CREATE PROCEDURE `isLogged`(in p_sessid VARCHAR(32), out res INT(1))
BEGIN
DECLARE v_customer_id INT(9);
DECLARE v_date DATE;
SELECT customer_id INTO v_customer_id FROM Sessions WHERE sessid=p_sessid;
SELECT expiry_date INTO v_date FROM Sessions WHERE sessid=p_sessid;
SET res=3;
IF v_customer_id > 0 THEN
IF UNIX_TIMESTAMP(NOW()) > UNIX_TIMESTAMP(v_date) THEN
DELETE FROM Sessions WHERE sessid=p_sessid;
SET res=1;
ELSE
UPDATE Sessions SET expiry_date=DATE_ADD(NOW(), INTERVAL 15 MINUTE) WHERE customer_id=v_customer_id;
SET res=0;
END IF;
END IF;
END
Может кто-нибудь сказать, почему он всегда возвращает 1, что означает, что пользователь больше не зарегистрирован? Я проверял вручную выражение UNIX_TIMESTAMP (NOW ())> UNIX_TIMESTAMP (v_date), и оно дает мне 0 в ответ, так? В чем дело?
Спасибо заранее,
Marcin