2008-04-02 10:44:47来源:互联网 阅读 ()
通过在配置保留的小数位数,连同小数位数以后的尾数的处理方法,能够灵活的满足客户需要
处理方法表
AMOUNTDOT NUMBER(4,2) DEFAULT 0.01, --金额精确度 1: 精确到元 0.1:精确到角 0.01:精确到分ROUNDING NUMBER(1) , --舍入分界 -- 9: 全舍 0: 全入 4:四舍5入
建立ORACLE函数,传入配置ID,传入金额,返回处理过的金额
存储过程实现代码如下
create or replace function Get_Real_Number ( --根据处理方法ID,取得处理后的金额-计算的金额 ID IN NUMBER, -- 处理方法ID n_Amount IN NUMBER) ----------------------------------------------------------------------- -- 用 途 自定义数据精度处理。 -- 创建者 :Andrew ----------------------------------------------------------------------- -- 修改记录列表:(按日期的先后顺序逆序排列) -- 修改时间 修改人 实现的功能说明 -- 9 全舍 0 全入 4四舍5入 -----------------------------------------------------------------------return NUMBER-- 返回的金额IS v_amountdot VARCHAR2(5); --小数位数字符 v_keep NUMBER ; --保留的小数位数 v_rounding NUMBER ; --舍入分界 v_Amount NUMBER:=0 ; --返回的金额BEGIN
SELECT amountdot, nvl(rounding,0) INTO v_amountdot,v_rounding FROM 处理方法表 WHERE id = SALE_PLACE_ID; v_keep := Length(v_amountdot) - instr(v_amountdot,'.') ; --要保留的小数位数 IF v_rounding = 9 THEN --处理全舍弃 v_Amount := trunc(n_Amount,v_keep); END IF; IF v_rounding = 4 THEN --处理四舍五入 v_Amount := round(n_Amount,v_keep); END IF; IF v_rounding = 0 THEN --处理全进位 v_Amount := trunc(n_Amount,v_keep); --小数为数刚好等于需要保留的数 IF v_Amount <> n_Amount THEN --假如截取后的数和原来的数字不同,进1 v_Amount := v_Amount to_number(v_amountdot); END IF; RETURN v_Amount;
exception when OTHERS then RETURN n_Amount;
END Get_Real_Number;
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 当SQL Server数据库崩溃时如何恢复
下一篇: 如何将数据库中被锁表解锁
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟: 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯: 搜索引擎 网络游戏 电子商务 广告传媒
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计: Java技术 C/C++ VB delphi
网络知识: 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统: Win2000 WinXP Win2003 Mac OS Linux FreeBSD