【问题标题】:How to specify the precision/scale JDBC metadata of Oracle numbers?如何指定 Oracle 数字的精度/比例 JDBC 元数据?
【发布时间】:2012-10-18 19:56:03
【问题描述】:

我需要强制结果列的精度和比例,以对货币值进行自定义格式化(我假设每个 NUMBER(*,2) 都是货币值)。 考虑以下查询:

select cast(1234.56 as NUMBER(6,2)) from dual;

如有必要,它会进行预期的舍入,但结果元数据描述了一个具有未指定精度和比例的数字字段:

System.out.println( rs.getMetaData().getScale(1) ); // prints 0;

我相信 JDBC 端发生了一些奇怪的事情,因为以下脚本确实按预期返回了 NUMBER(6,2):

drop table temp;
create table temp as (
select cast(1234.56 as NUMBER(6,2)) x from dual
);
select * from temp;

【问题讨论】:

    标签: database oracle jdbc


    【解决方案1】:

    不应该这样

    System.out.println( rs.getMetaData().getScale(1));  //For the first column
    System.out.println( rs.getMetaData().getScale(2));  //For the second column
    

    等等。

    你的代码

    System.out.println( rs.getMetaData().getScale(0) ); //0th Column??
    

    引用this链接-

    getPrecision

    public int getPrecision(int column)
                      throws SQLException 
    

    获取指定列的小数位数。

    参数column - 第一列为1, 第二个是2,...

    返回:精度

    抛出:SQLException - 如果一个 发生数据库访问错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多