1

通貨値にカスタム書式を設定するには、結果列の精度とスケールを強制する必要があります(すべてのNUMBER(*、2)が通貨値であると想定しています)。次のクエリについて考えてみます。

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

必要に応じて期待される丸めを実行しますが、結果のメタデータは、指定されていない精度とスケールで数値フィールドを記述します。

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

次のスクリプトは期待どおりにNUMBER(6,2)を返すため、JDBC側で何か奇妙なことが起こっていると思います。

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

1 に答える 1

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??

このリンクからの引用-

getPrecision

public int getPrecision(int column)
                  throws SQLException 

指定された列の 10 進数の桁数を取得します。

パラメータ: column - 最初の列は 1、2 番目の列は 2、...

戻り値: 精度

例外: SQLException - データベース アクセス エラーが発生した場合

于 2012-10-29T18:28:33.927 に答える