mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-16 08:15:53 +01:00
91 lines
1.8 KiB
MySQL
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;
|