Oracle 数据库自带内部函数的问题。
发布网友
发布时间:2022-04-08 10:52
我来回答
共3个回答
热心网友
时间:2022-04-08 12:21
自己写oracle function吧。俺写了一半不想写了。居然还没有悬赏分!!!
create or replace function Num2CN(num in varchar) return varchar is
Result varchar (2);
begin
case num
when '1' then
Result:='一';
when '2' then
Result:='二';
when '3' then
Result:='三';
when '4' then
Result:='四';
when '5' then
Result:='五';
when '6' then
Result:='六';
when '7' then
Result:='七';
when '8' then
Result:='八';
when '9' then
Result:='九';
when '0' then
Result:='零';
end case;
return(Result);
end Num2CN;
create or replace function getunit(num in number) return varchar is
Result varchar(1);
begin
case num
when '1' then
Result:='';
when '2' then
Result:='十';
when '3' then
Result:='百';
when '4' then
Result:='千';
end case;
return(Result);
end getunit;
create or replace function getBunit(num in number) return varchar is
Result varchar(1);
begin
if num>8 then
Result:='亿';
elsif num>4 then
Result:='万';
end if;
return(Result);
end getBunit;
CREATE OR REPLACE FUNCTION convertandoutput(str IN VARCHAR2) RETURN INTEGER IS
v_result INTEGER;
DECLARE
str_length number;
Bunit varchar(1);
unit varchar(1);
cn varchar(1);
tmp number;
BEGIN
str_length:=LENGTH(str);
tmp:=str_length;
while(str_length>0)
if str_length>8 and tmp=8 then
Bunit:=GETBUNIT(str_length);
v_result:=concat(v_result,Bunit);
elsif str_length>8 and tmp =4 then
Bunit:=GETBUNIT(str_length);
v_result:=concat(v_result,Bunit);
elsif tmp>0 then
cn:= NUM2CN(substr(str,1,1);
unit:=GETUNIT(tmp);
str:=substr(str,2);
v_result
tmp:=tmp-1;
end while;
IF str_length<5 THEN
dbms_output.put_line(Num2Cn(substr(str,1,1))||'千' );
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END isnumeric;
主处理没写完。。。
热心网友
时间:2022-04-08 13:39
基本的NVL等简单函数 你可以直接搜索,看下他的原理,但是oracle的内部处理是不开放的吧,oracle是收费的~~!不是开源的!
热心网友
时间:2022-04-08 15:14
oracle不开源 要看要去看他oracle的api