11.12.2010 17:10, Vlad Nepomnjashy пишет:

Firebird Server Version: WI-V2.5.0.26074 Firebird 2.5

CREATE DATABASE 'bdname' DEFAULT CHARACTER SET WIN1251;

Чарсет коннекта какой?

create procedure test (p_in varchar(256))
returns (p_out varchar(256))
as
begin
   rdb$set_context('USER_SESSION', 'UNAME', :p_in);
   p_out = coalesce(rdb$get_context('USER_SESSION', 'UNAME'), current_user);
   suspend;
end

isql -u sysdba
execute procedure test('test')
--test

execute procedure test('тест') --не латиница

Invalid token
Mailformed string
At procedure TEST1 line 7 col 2

Бага или какие-то заморочки с кодировками?

Кстати, если заменить на
   p_out = coalesce(rdb$get_context('USER_SESSION', 'UNAME'),
rdb$get_context('SYSTEM', 'CURRENT_USER'));

то все нормально.

CURRENT_USER возвращает строку в UTF8, контекстные переменные работают с чарсетом коннекта.


--
Дмитрий Еманов

Ответить