fb 2.1.1

есть домены:
CREATE DOMAIN STR_USERID AS VARCHAR(128) not null;
CREATE DOMAIN STR_NAME AS VARCHAR(1024);

есть такая процедура:

set term ^ ;
create procedure GetUserData(userAccount STR_USERID)
returns(User_ID          STR_USERID,
        User_Name        STR_NAME,
        User_DigestHash  varchar(128))
as
begin
 for select User_ID,User_Name,User_DigestHash
  from Users
  where User_ID=:userAccount
  into :User_ID,:User_Name,:User_DigestHash do begin
   suspend;
 end
end^
set term ; ^

суть - не давать права на чтение таблицы, а только право "найти
пользователя по ID"

проблема: если вызывать процедуру с несуществующим в таблице user_id
то возникает такая ошибка:
The insert failed because a column definition includes validation
constraints.validation error for variable USER_ID, value "*** null
***". At procedure 'GETUSERDATA' line: 7, col: 2.

Я предполагаю, что процедура должна вернуть пустой датасет, а оно
ругается на null.
Обходной маневр - присвоить в начале User_ID=''; тогда работает, как
должно, но имхо, это что-то неправильное.

Ответить