create or replace function f_name_to_pinyin(as_inputstring varchar2, al_len number) return varchar2 is
i number;
ls_ch varchar2(1000);
ls_returnstr varchar2(1000);
begin
if as_inputstring is null then
return null;
end if;
ls_returnstr := null;
i := 1;
loop
ls_ch := substr(as_inputstring, i, 1);
if ascii(ls_ch) < 128 then
ls_returnstr := ls_returnstr || upper(ls_ch);
else
if ls_ch in ('铵', '庵') then
ls_returnstr := ls_returnstr || 'A';
elsif ls_ch in ('蟾') then
ls_returnstr := ls_returnstr || 'C';
elsif ls_ch in ('鑫', '酰', '馨', '逍') then
ls_returnstr := ls_returnstr || 'X';
elsif ls_ch in ('绮', '嗪', '祛', '琪', '倩', '羟', '芩', '杞', '衢') then
ls_returnstr := ls_returnstr || 'Q';
elsif ls_ch in ('膦', '蓼', '榄', '蛎', '蒺', '蔹', '啉', '莨', '苓', '苈', '楝') then
ls_returnstr := ls_returnstr || 'L';
elsif ls_ch in ('癀', '琥', '荟', '藿', '茴', '槲', '斛', '蛤', '昊') then
ls_returnstr := ls_returnstr || 'H';
elsif ls_ch in ('苄', '铋', '檗', '孢') then
ls_returnstr := ls_returnstr || 'B';
elsif ls_ch in ('啶', '黛', '酊', '椴', '菪', '哚') then
ls_returnstr := ls_returnstr || 'D';
elsif ls_ch = '噁' then
ls_returnstr := ls_returnstr || 'E';
elsif ls_ch in ('埚', '枸', '坩', '苷', '橄', '呱', '酐', '甙', '胱', '钴', '蚣') then
ls_returnstr := ls_returnstr || 'G';
elsif ls_ch in ('皲', '芨', '蒺', '戟') then
ls_returnstr := ls_returnstr || 'J';
elsif ls_ch in ('孚', '茯') then
ls_returnstr := ls_returnstr || 'F';
elsif ls_ch in ('蔻', '匮') then
ls_returnstr := ls_returnstr || 'K';
elsif ls_ch in ('蟆', '莓', '咪', '朦', '沐', '嘧', '眸') then
ls_returnstr := ls_returnstr || 'M';
elsif ls_ch in ('脲', '萘', '蛲', '咛') then
ls_returnstr := ls_returnstr || 'N';
elsif ls_ch in ('脘', '薇', '蜈', '菀') then
ls_returnstr := ls_returnstr || 'W';
elsif ls_ch in ('溴', '昔', '蛸') then
ls_returnstr := ls_returnstr || 'X';
elsif ls_ch in ('龈', '橼', '瘀', '翳', '鸦', '吲', '薏', '苡', '萸', '榈') then
ls_returnstr := ls_returnstr || 'Y';
elsif ls_ch in ('佗', '肽', '葶') then
ls_returnstr := ls_returnstr || 'T';
elsif ls_ch = '髯' then
ls_returnstr := ls_returnstr || 'R';
elsif ls_ch = '参' and substr(as_inputstring, i + 1, 1) in ('数','加','考','观') then
ls_returnstr := ls_returnstr || 'C';
elsif ls_ch in ('参', '噻', '麝', '椹', '熵') then
ls_returnstr := ls_returnstr || 'S';
elsif ls_ch in ('哌', '吡', '嘌', '珀', '枇', '杷', '螵') then
ls_returnstr := ls_returnstr || 'P';
elsif