【问题标题】:Assist with currency format协助货币格式
【发布时间】:2016-07-14 21:09:05
【问题描述】:

美好的一天,请有人帮助我使用###,###,###.## 的货币格式我尝试的所有内容似乎都卡住了 - 我的代码如下:

function CF_TOTAL_COSTFormula return Number is total_cost number; begin select SUM(share_amount) into total_cost from reservation_name rn, reservation_daily_element_name rden where rn.resv_name_id = rden.resv_name_id and rn.resv_name_id = :resv_name_id and trunc(rden.reservation_date) between trunc(rn.begin_date) and trunc(rn.end_date - 1); return total_cost; exception when others then return 0; end;

【问题讨论】:

  • 上面的代码踢出1234这样的数字,我希望它是1,234.00的格式

标签: sql oracle format currency


【解决方案1】:

您的函数返回NUMBER。 Oracle 中的数字没有格式。如果你想返回一个格式化的数字,你需要返回一个VARCHAR2。像这样的:

function CF_TOTAL_COSTFormula return varchar2 is
total_cost varchar2(30);
begin
  select to_char(SUM(share_amount),'999,999,990.00') into total_cost
  from reservation_name rn,
         reservation_daily_element_name rden
  where rn.resv_name_id = rden.resv_name_id
  and rn.resv_name_id = :resv_name_id
  and trunc(rden.reservation_date) between trunc(rn.begin_date) and trunc(rn.end_date - 1);
  return total_cost;
exception when others then
    return 'error';
end;

顺便说一句,我从您的函数名称中推断出您可能正在使用 Oracle Reports 或 Oracle BI Publisher。如果是这样,您应该继续返回一个数字并处理布局中的显示格式,而不是模型。

【讨论】:

  • 这就像一个魅力,我已经将它应用到我正在努力的多个领域,它是完美的!我正在使用 Oracle Reports,您是 100% 正确的,但我使用它们的目的是很难在前端自定义格式,因为它会影响其他布局。再次非常感谢!!!
  • 我确实还有一个问题,也许您可​​以提出建议,我有一个计算当前输出 4 位小数,但我想四舍五入到最接近的 2 位小数,我尝试使用 ROUND(( ret_val),2) 但无论我是否将 2 增加到 6 偶数,它都会四舍五入到最接近的 rand,有什么想法吗?
  • 我不确定“四舍五入到最近的兰特”是什么意思。但是,ROUND(x,2) 会将x 舍入到小数点后两位。请记住,数字没有格式。所以,round(3.4976) 将是 3.5,而不是“3.50”。
猜你喜欢
  • 2015-10-24
  • 1970-01-01
  • 2012-01-22
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多