oracle to char 百分比,使用TO_CHAR在Oracle中进行数字格式化

我需要2位小数,显示货币字段。

确保您使用具有适合数据的比例和精度的数字数据类型,而不使用NUMBER而没有比例和精度。如果你打算存储美元/欧元/磅/等。那么Gross World Product是的$ 100,000,000,000,000在2014年的订单让我们假设你是不是将要处理超过此[来源请求]那么你的货币列可以是:

NUMBER(17,2)

如果你得到一个价值大于此值,那么您需要对您的数据执行完整性检查,并考虑一个比世界总产品更大的数额是否合理。如果您要将这些值存储为例如日元或津巴布韦元,请适当调整比例。

你甚至可以在一个包中定义一个子类:

CREATE PACKAGE currencies_pkg IS

SUBTYPE currency_type IS NUMBER(17,2);

FUNCTION formatCurrency(

amount IN CURRENCY_TYPE

) RETURN VARCHAR2;

END;

/

您的代码格式化,可以这样:

CREATE PACKAGE BODY currencies_pkg IS

FUNCTION formatCurrency(

amount IN CURRENCY_TYPE

) RETURN VARCHAR2

IS

BEGIN

RETURN TO_CHAR(currency_value, 'FM999999999999990D00');

END;

END;

/

然后,如果你引用的子类型的存储过程/包,您将无法超过货币数据类型的最大大小,而不会引发异常。显示值的格式模型只需要在一个地方定义,并且由于输入限于货币子类型,所以格式化函数将永远不会超过强加的比例/精度,并且不能输出#。

CREATE PROCEDURE your_procedure(

in_value1 IN ACCOUNTS_TABLE.ACCOUNT_BALANCE%TYPE,

in_value2 IN ACCOUNTS_TABLE.ACCOUNT_BALANCE%TYPE

)

IS

v_value CURRENCIES_PKG.CURRENCY_TYPE;

BEGIN

-- Do something

v_value := in_value1 + in_value2;

-- Output formatted value

DBMS_OUTPUT.PUT_LINE(CURRENCIES_PKG.formatCurrency(v_value));

END;

/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值