oracle forms 12. 如何显示十进制数的前导零

Posted

技术标签:

【中文标题】oracle forms 12. 如何显示十进制数的前导零【英文标题】:oracle forms 12. how to display leading zero of decimal numbers 【发布时间】:2020-04-07 08:42:25 【问题描述】:

我希望将十进制数字(来自查询)显示到文本项中。 如果我设置

:TXT_ITEM := '0,000123456789'

它有效。但是,如果:TXT_ITEM 绑定到数值表字段,则值显示为,000123456789

我试图在几个触发器(post-change、when-new-record-instance、post-text...)上强制使用格式编号,但未成功。另一方面,设置 format_mask 会强制我的 DB 值为给定的小数位数。

如何让前导零显示?

【问题讨论】:

当您说“设置格式掩码”时,您是指在字段属性中设置它,还是按照您的帖子前面所述通过代码设置它? 【参考方案1】:

看看这两个选项是否有帮助。

样本数据:

SQL> create table test as
  2    (select 12.34 col             from dual union all
  3     select 0.1234003             from dual union all
  4     select -13.43432203          from dual union all
  5     select 0.00012345221         from dual union all
  6     select -0.002412428238234821 from dual
  7    );

Table created.

SQL> desc test;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COL                                                NUMBER

SQL> select col,
  2    regexp_replace(col, '^(-?)([.,])', '\10\2') result1,
  3    rtrim(to_char(col, 'fm90D999999999999999999999'), '.') result2
  4  from test;

       COL RESULT1                   RESULT2
---------- ------------------------- -------------------------
     12,34 12,34                     12,34
  ,1234003 0,1234003                 0,1234003
-13,434322 -13,43432203              -13,43432203
,000123452 0,00012345221             0,00012345221
-,00241243 -0,002412428238234821     -0,002412428238234821

SQL>

如何在表单中使用它/它们?正是这样 - 你会例如

select regexp_replace(col, '^(-?)([.,])', '\10\2')
  into :block.text_item
  from your_table
  where some_condition;

【讨论】:

【参考方案2】:

好像表中相关的数值数据属于类型

NUMBER(13,12) 

在这种情况下,将 Property PaletteData 部分中的 TXT_ITEMs Format Mask 属性设置为

0D000000000000

具有13 的精度和12 值的比例。

考虑到比例部分是固定的,您可以根据列的精度值在D 字符之前添加更多零,例如为NUMBER(14,12) 保留D 之前的两个零或为NUMBER(15,12) 保留三个零。

【讨论】:

以上是关于oracle forms 12. 如何显示十进制数的前导零的主要内容,如果未能解决你的问题,请参考以下文章

js怎样把10进制数转换成16进制数显示?

如何循环每个可能的十六进制数(00 - FF)

十进制数、to_char 和 Oracle

如何从 Oracle Forms 中的触发器修改按钮的状态

如何找到Oracle Forms接口集成的PL/SQL程序

关于Oracle函数ROWTOHEX()的问题