仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1033|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL编程:在营业体系中处置小数精度, 四舍五进,全...

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:40:42 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
每个Rows_log_event中包含event_type,可选值为WRITE_ROWS_EVENT、UPDATE_ROWS_EVENT、DELETE_ROWS_EVENT。从宏名字就能看出用途。
在营业体系中,分歧的客户对小数的处置有分歧的办法

经由过程在设置保存的小数位数,和小数位数今后的尾数的处置办法,能够天真的满意客户请求

处置办法表

IDNUMBER(1),--设置ID

AMOUNTDOTNUMBER(4,2)DEFAULT0.01,--金额准确度1:准确到元0.1:准确到角0.01:准确到分ROUNDINGNUMBER(1),--舍进分界--9:全舍0:全进4:四舍5进

创建ORACLE函数,传进设置ID,传进金额,前往处置过的金额

存储历程完成代码以下

createorreplacefunctionGet_Real_Number(--依据处置办法ID,获得处置后的金额-盘算的金额IDINNUMBER,--处置办法IDn_AmountINNUMBER)-------------------------------------------------------------------------用途自界说数据精度处置。--创立者:Andrew-------------------------------------------------------------------------修正纪录列表:(按日期的前后按次逆序分列)--修正工夫修正人完成的功效申明--9全舍0全进4四舍5进-----------------------------------------------------------------------returnNUMBER--前往的金额ISv_amountdotVARCHAR2(5);--小数位数字符v_keepNUMBER;--保存的小数位数v_roundingNUMBER;--舍进分界v_AmountNUMBER:=0;--前往的金额BEGIN

SELECTamountdot,nvl(rounding,0)INTOv_amountdot,v_roundingFROM处置办法表WHEREid=SALE_PLACE_ID;v_keep:=Length(v_amountdot)-instr(v_amountdot,.);--要保存的小数位数IFv_rounding=9THEN--处置全舍弃v_Amount:=trunc(n_Amount,v_keep);ENDIF;IFv_rounding=4THEN--处置四舍五进v_Amount:=round(n_Amount,v_keep);ENDIF;IFv_rounding=0THEN--处置全进位v_Amount:=trunc(n_Amount,v_keep);--小数为数恰好即是请求保存的数IFv_Amountn_AmountTHEN--假如截取后的数与本来的数字分歧,进1v_Amount:=v_Amount+to_number(v_amountdot);ENDIF;RETURNv_Amount;

exceptionwhenOTHERSthenRETURNn_Amount;

ENDGet_Real_Number;
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-9 10:58

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表