熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

如何在ORACLE中實現人民幣大寫的轉換

2013-11-13 22:14:14  來源: Oracle 

  ORACLE在實現報表的功能是很強大的 特別在現實的應用中會經常用到人民幣大小寫轉換的問題 在此我寫個函數向大家簡單介紹一下 希望和大家一起探討 以便共同進步! 共同發展!
  
   函數DX_MONEY()
  
  CREATE FUNCTION DX_MONEY
  (
  MONEY IN NUMBER
  )
  RETURN VARCHAR AS V_MONEY VARCHAR();
  RV_MONEY VARCHAR();
  RV_MONEY VARCHAR();
  RV_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  V_MONEY VARCHAR();
  RPV_MONEY VARCHAR();
  RPV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  PV_MONEY VARCHAR();
  
  BEGIN
  V_MONEY:=LTRIM(RTRIM(TO_CHAR(FLOOR(MONEY))));
  RV_MONEY:=LTRIM(RTRIM(TO_CHAR(FLOOR(MONEY*))));
  RV_MONEY:=SUBSTR(RV_MONEYLENGTH(RV_MONEY));
  IF LENGTH(RV_MONEY)> THEN
  RV_MONEY:=SUBSTR(RV_MONEYLENGTH(RV_MONEY));
  ELSE
  RV_MONEY:=;
  END IF;
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  IF LENGTH(V_MONEY)> THEN
  V_MONEY:=SUBSTR(V_MONEYLENGTH(V_MONEY));
  ELSE V_MONEY:=;
  END IF;
  
  select DECODE(RV_MONEY零分壹分貳分參分肆分伍分
  陸分柒分扒分玖分) into rpv_money from dual;
  select DECODE(RV_MONEY零角壹角貳角參角肆角伍角
  陸角柒角扒角玖角) into rpv_money from dual;
  select DECODE(V_MONEY壹元貳元參元肆元伍元
  陸元柒元扒元玖元) into pv_money from dual;
  select DECODE(V_MONEY壹拾貳拾參拾肆拾伍拾
  陸拾柒拾扒拾玖拾) into pv_money from dual;
  select DECODE(V_MONEY壹佰貳佰參佰肆佰伍佰
  陸佰柒佰扒佰玖佰) into pv_money from dual;
  select DECODE(V_MONEY壹仟貳仟參仟肆仟伍仟
  陸仟柒仟扒仟玖仟) into pv_money from dual;
  select DECODE(V_MONEY壹萬貳萬參萬肆萬伍萬
  陸萬柒萬扒萬玖萬) into pv_money from dual;
  select DECODE(V_MONEY壹拾貳拾參拾肆拾伍拾
  陸拾柒拾扒拾玖拾) into pv_money from dual;
  select DECODE(V_MONEY壹佰貳佰參佰肆佰伍佰
  陸佰柒佰扒佰玖佰) into pv_money from dual;
  select DECODE(V_MONEY壹仟貳仟參仟肆仟伍仟
  陸仟柒仟扒仟玖仟) into pv_money from dual;
  select DECODE(V_MONEY壹億貳億參億肆億伍億
  陸億柒億扒億玖億) into pv_money from dual;
  select DECODE(V_MONEY壹拾貳拾參拾肆拾伍拾
  陸拾柒拾扒拾玖拾) into pv_money from dual;
  select DECODE(V_MONEY壹佰貳佰參佰肆佰伍佰
  陸佰柒佰扒佰玖佰) into pv_money from dual;
  select DECODE(V_MONEY壹仟貳仟參仟肆仟伍仟
  陸仟柒仟扒仟玖仟) into pv_money from dual;
  V_MONEY:=PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||
  PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||PV_MONEY||
  RPV_MONEY||RPV_MONEY;
  RETURN (V_MONEY);
  END;
  
   執行狀況如下:
  
  SQL*Plus: Release Production on 星期二 ::
  
  Copyright (c) Oracle Corporation All rights reserved
  
  連線到:
  Oraclei Enterprise Edition Release Production
  With the Partitioning option
  JServer Release Production
  
  SQL> select dx_money() from dual;
  
  DX_MONEY()
  
  參億貳仟肆佰肆拾伍萬伍佰陸拾柒元扒角玖分
  
   本例的最大數字
  
   以上函數寫的比較簡單易懂 語法上不一定精簡 歡迎大家一起探討!

From:http://tw.wingwit.com/Article/program/Oracle/201311/18555.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.