如何创建语言辅助函数呢
下面是生成一个数字拼写版本所需的代码。这里我将按照基数来(比如1、2和3);而事实上,这些函数可以通过为每种语言列出更多异常和模式来生成序数(第1、第2、第三)和复数版本。
REM -- create a table of base words and exceptions
create or replace package genword
as
function get_word(n number) return varchar2;
function cardinal(n number) return varchar2;
end genword;
/
不给任何赔偿。 张女士认为 show errors;
create or replace package body genword
as
function get_word(n number) return varchar2
is
l_rd%type;
begin
select word into l_word from numwords
where lang = sys_context(\'userenv\',\'lang\') and num = n;
return l_word;
exception
when no_data_found then
return null;
end;
--
function cardinal(n number) return varchar2
is
p number; -- power
t varchar2(30); -- template
v number; -- lower portion
l_word rd%type;
begin
if n 0 then
l_word := get_word(-1);
if l_word is null then
return null;
end if;
return l_word||\' \'||cardinal(-n);
end if;
l_word := get_word(n);
if l_word is not null then
return l_word;
end if;
for row in
(
select * from numrules
where lang = sys_context(\'userenv\',\'lang\')
order by seq
)
loop
if length(n) = row.p1 + row.p2 then
p := power(10,row.p2);
v := mod(n,p);
if q = 0 then
if n 20 then
return replace(mp0,\'~2\',cardinal(v));
end if;
else
if v = 0 then
return replace(mp0,\'~1\',cardinal(n/p));
else
return replace(replace(nvl(mp,\'~1 ~2\'),
\'~1\',cardinal(n-v)),
\'~2\',cardinal(v));
end if;
end if;
end if;
end loop;
return \'NUMBER TOO LARGE\';
end cardinal;
end genword;
/
show errors;
小儿积食吃什么药唐山哪家男科医院好
长春男科医院哪好
- 上一页:如何创建语言辅助函数牛
- 下一页:如何创建语言辅助函数的
-
新泽西州经济衰退风险上升!分析师:新兴市场资产将更具弹性
新兴商品不动产虽然也将随之而来短期动乱,但主体上,替代品成交、更是高...
2025-04-06
-
10年,全国初高中财政性教育经费投入增幅超1倍
中国普及教育刊-中国普及教育新闻报道网成都7年初5日讯(新闻报道记者 林...
2025-04-04
-
三脚一句送给自己吧
——可在生活当中,每个人都与此相关区域内着剧场版。——并不是所有的痛...
2025-02-19
-
少量饮酒能减少危害?很多人对此毫不知情
本文转自:肥胖症时报 358639622022-07-06 10:24:27.0寡比率饮能减小严重危害?很多...
2024-12-30
-
飞科迎来“强劲对手”,李开复带货力荐,39.9元好评率高达97%
剃须刀并不是什么那时候的本性,仅仅各家各户有体面的家庭都有剃须刀,不...
2024-12-29
-
狂欢、挑战、快慰……静听赵富杰散文《雪夜野餐管涔山》有感
还不曾进入小暑节气,气温再加升到36度,热浪涛涛,疫情反复,无可奈何,...
2024-12-27