delphimvcframework/unittests/general/Several/bin32/firebird/misc/intl.sql

91 lines
1.8 KiB
MySQL

/***
*
* Usage example
* -------------
*
* input 'intl.sql';
*
* execute procedure sp_register_character_set ('CHARSET_NAME', 1);
* commit;
*
* execute procedure sp_unregister_character_set ('CHARSET_NAME');
* commit;
*
*/
set term !;
create or alter procedure sp_register_character_set
(
name char(31) character set unicode_fss,
max_bytes_per_character smallint
)
as
declare variable id smallint;
declare variable temp_id smallint;
begin
name = upper(name);
id = 255;
for select rdb$character_set_id
from rdb$character_sets
order by rdb$character_set_id desc
into :temp_id do
begin
if (temp_id = id) then
begin
id = id - 1;
if (id = 127) then
id = 126;
end
else
break;
end
if (id > 0) then
begin
insert into rdb$types
(rdb$field_name, rdb$type, rdb$type_name, rdb$system_flag)
values ('RDB$CHARACTER_SET_NAME', :id, :name, 0);
insert into rdb$character_sets
(rdb$character_set_name, rdb$character_set_id, rdb$system_flag, rdb$bytes_per_character, rdb$default_collate_name)
values (:name, :id, 0, :max_bytes_per_character, :name);
insert into rdb$collations
(rdb$collation_name, rdb$collation_id, rdb$character_set_id, rdb$system_flag)
values (:name, 0, :id, 0);
end
end!
create or alter procedure sp_unregister_character_set
(
name char(31) character set unicode_fss
)
as
declare variable id smallint;
begin
name = upper(name);
select rdb$character_set_id
from rdb$character_sets
where rdb$character_set_name = :name
into :id;
delete from rdb$collations
where rdb$character_set_id = :id;
delete from rdb$character_sets
where rdb$character_set_id = :id;
delete from rdb$types
where rdb$field_name = 'RDB$CHARACTER_SET_NAME' and rdb$type_name = :name;
end!
set term ;!
commit;