【发布时间】:2015-12-27 01:38:08
【问题描述】:
我正在寻找与 Oracle SQL 数据类型 NUMERIC/DECIMAL 对应的 Java 数据类型。
我从网络和其他文档中获得了同样推荐使用 java.math.BigDecimal 的信息。查看一份文件。
http://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/guide/jdbc/getstart/mapping.doc.html
DECIMAL 和 NUMERIC 类型的推荐 Java 映射是 java.math.BigDecimal,一种 Java 类型,也表示定点 具有绝对精度的数字。 java.math.BigDecimal 类型 提供数学运算以允许添加 BigDecimal 类型, 与其他 BigDecimal 类型相减、相乘和相除,其中 整数类型,以及浮点类型。
检索 DECIMAL 和 NUMERIC 值的推荐方法是 结果集.getBigDecimal。 JDBC 还允许访问这些 SQL 类型 简单的字符串或字符数组。因此,Java 程序员可以使用 getString 接收 DECIMAL 或 NUMERIC 结果。然而,这使得 DECIMAL 或 NUMERIC 用于货币值的常见情况 相当尴尬,因为这意味着应用程序编写者必须 对字符串进行数学运算。也可以检索这些 SQL 类型为任何 Java 数字类型。
我的最终目标是将 Oracle PLSQL 逻辑转换为等效的 Java 代码。我试图用示例逻辑来解释。
参见下面的示例:
在甲骨文中:
DECLARE
inv_quantity_Balance DECIMAL(10,2);
BEGIN
WHEN (inv_quantity_Balance <= 1) THEN
inv_quantity_Balance := 2;
ELSE
inv_quantity_Balance := 3;
END;
Java:
BigDecimal inv_quantity_Balance = null ;
if ((inv_quantity_Balance <= 1)) {
inv_quantity_Balance = 2 ;
}else {
inv_quantity_Balance = 3 ;
}
它显示编译器错误:
The operator <= is undefined for the argument type(s) BigDecimal, int
Type mismatch: cannot convert from int to BigDecimal
这只是一个示例。 请帮我找到相同的java等效项。如何保持精度和比例等?
【问题讨论】:
标签: java oracle transformation type-conversion