v_str varchar2(500);--將小寫金額存成字串
v_dxje varchar2(500);--最後的大寫金額
v_i number;--單位對應的位置
v_j number;--數的位置
v_bety varchar2(500);--單位數轉換成的大寫
v_dwcn varchar2(5001);--單位跟大寫數字的組合
--小寫金額轉大寫金額
v_dxje:=null;
v_num:=length(v_ycxbte);
v_str:=to_char(v_ycxbte);
v_i:=0;
while v_i <= v_num-1 loop
v_dwcn:=null;
v_j:=v_num-v_i;
select substr(v_str,v_j,1) into v_bety from dual;
--判斷大寫金額
case v_bety
when '0' then
v_dwcn:='零'||v_dwcn;
when '1' then
v_dwcn:='壹'||v_dwcn;
when '2' then
v_dwcn:='貳'||v_dwcn;
when '3' then
v_dwcn:='叄'||v_dwcn;
when '4' then
v_dwcn:='肆'||v_dwcn;
when '5' then
v_dwcn:='伍'||v_dwcn;
when '6' then
v_dwcn:='陸'||v_dwcn;
when '7' then
v_dwcn:='柒'||v_dwcn;
when '8' then
v_dwcn:='捌'||v_dwcn;
when '9' then
v_dwcn:='玖'||v_dwcn;
end case;
--判斷單位
case v_i
when 0 then
v_dwcn:=v_dwcn||'圓';
when 1 then
v_dwcn:=v_dwcn||'拾';
when 2 then
v_dwcn:=v_dwcn||'佰';
when 3 then
v_dwcn:=v_dwcn||'仟';
when 4 then
v_dwcn:=v_dwcn||'萬';
when 5 then
v_dwcn:=v_dwcn||'拾';
when 6 then
v_dwcn:=v_dwcn||'佰';
when 7 then
v_dwcn:=v_dwcn||'仟';
when 8 then
v_dwcn:=v_dwcn||'億';
when 9 then
v_dwcn:=v_dwcn||'拾';
when 10 then
v_dwcn:=v_dwcn||'佰';
when 11 then
v_dwcn:=v_dwcn||'仟';
when 12 then
v_dwcn:=v_dwcn||'萬';
end case;
v_dxje:=v_dwcn||v_dxje;
v_i:=v_i+1;
end loop;
select replace(v_dxje,'零拾','零') into v_dxje from dual;
select replace(v_dxje,'零佰','零') into v_dxje from dual;
select replace(v_dxje,'零仟','零') into v_dxje from dual;
select replace(v_dxje,'零零零','零') into v_dxje from dual;
select replace(v_dxje,'零零','零') into v_dxje from dual;
select replace(v_dxje,'零億零萬零元','億元') into v_dxje from dual;
select replace(v_dxje,'億零萬零元','億元') into v_dxje from dual;
select replace(v_dxje,'零億零萬','億') into v_dxje from dual;
select replace(v_dxje,'零萬零元','萬元') into v_dxje from dual;
select replace(v_dxje,'萬零元','萬元') into v_dxje from dual;
select replace(v_dxje,'零億','億') into v_dxje from dual;
select replace(v_dxje,'零萬','萬') into v_dxje from dual;
select replace(v_dxje,'零元','元') into v_dxje from dual;
select replace(v_dxje,'零零','零') into v_dxje from dual;
v_dxje:=v_dxje||'整';
這個是裡面的片斷,但是無法編譯,請問高手問題出在**!!
我用的是pl/sql工具。
Oracle 儲存過程問題
pl sql block structure 為什麼儲存過程中用不到 declare 但是還要有這個東西?a 儲存過程只是過程的一種,其他的要用到 為什麼在過程中寫select一定要加into?a 因為oracle認為過程中寫select不加into是沒有意義的 oracle中如何判斷null a ...
Oracle 儲存過程問題
今天在寫儲存過程時,發現oracle儲存過程報錯太模糊。不能指定到某一個具體行。不知道各位有沒有更好的除錯oracle儲存過程的方法和工具。create or replace procedure sp loadunsettledwatertask exp date in varchar,過期日期 r...
Oracle儲存過程許可權問題
儲存過程分成兩種許可權 1.定義者許可權 authid definer 2.呼叫者許可權 authid current user 預設的情況下使用的是定義者許可權。1。定義者許可權使用遇到的問題 當使用定義者許可權時候,不管是你自己去call,還是其他使用者去call,效果是一樣的,都是用你的許可權...
Oracle 儲存過程許可權問題
今天在寫儲存過程時遇到一個不大不小的問題,pl sql報 表或者試圖不存在,但是問題關鍵是單獨執行sql 四沒有問題的,人也很無奈,經查閱資料得知,是dba許可權問題。因為角色在函式 儲存過程 觸發器中都是失效的,也就是說,使用者從角色繼承過來的許可權,不能在函式 儲存過程 觸發器中使用。在函式 儲...
Oracle儲存過程呼叫儲存過程
oracle儲存過程呼叫有返回結果集的儲存過程一般用遊標的方式,宣告一個遊標,把結果集放到遊標裡面,然後迴圈遊標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...