Я играю с веб-программированием и пытаюсь изучить соответствующие принципы. У меня есть база данных Firebird, и я пытаюсь настроить простую процедуру «нового пользователя». Кажется, он работает без ошибок, но фактически не создает новую запись пользователя.
Вот моя процедура:
SET TERM ^ ;
RECREATE PROCEDURE NEW_USER (
NAME VARCHAR(32),
"PASSWORD" VARCHAR(128))
RETURNS (
ID INTEGER)
AS
BEGIN
if (exists(
select * from USERS
where NAME like :name)) then
id = -1;
else
insert into USERS
(NAME, PASSWORD, SALT)
values (:name, :password, 's@lt')
returning ID into :id;
suspend;
END^
SET TERM ; ^
(Пожалуйста, без комментариев по поводу безопасности пароля. Я знаю. Сейчас это только для исследовательских целей.)
USERS
содержит 4 столбца: ID (поле autoincrement int, работающее от генератора), NAME, PASSWORD и SALT.
Когда я пытаюсь запустить его, вот так:
select ID from NEW_USER('Test', 'password')
выполняется и возвращает пустой набор. Если я тогда запросить таблицу:
select * from USERS
Я получил еще один пустой набор.
Есть идеи, почему процедура не создает нового пользователя?