|
|
|
Предположение...
Основа данной проблемы в том, что EXECUTE не возвращает данные в табличной форме ;-)
Зададимся вопросом, как это пофиксить?
Предлагаю такой вариант:
Добавить в таблицу поле LAST_LOGIN, а в процедуру передавать еще одно значение, равное времени запроса. Это время определять парсером и класть в переменную (пусть ^var[login_time].
Вызов типа EXECUTE PROCEDURE LOGIN("glen","swordfish","^var[login_time]")...
Сама ХП должна писать в случае "LOGIN_OK" это время в LAST_LOGIN, иначе оставлять LAST_LOGIN без изменений.
Затем делаем простой SELECT из этой таблицы с WHERE USER_NAME="glen" AND LAST_LOGIN="^var[login_time]"... Если возвернутый контекст пуст - авторизация не прошла, иначе - все хорошо... Что именно селектить? Да хоть то же время или имя пользователя.
Можно и просто селектить LAST_LOGIN у юзера "glen" и сравнивать его с ^var[login_time]... Что больше нравится ;-)
Надеюсь, достаточно ясно выразился ;-)))
|