Java ResultSetMetaData返回不正确的列类型

Java ResultSetMetaData返回不正确的列类型,java,oracle11g,Java,Oracle11g,所以我一直在用oracle数据库处理ResultSetMetaData 我遇到了一些我无法解释的奇怪事情。我有一个FLOAT列-定义为FLOAT(63)。当我使用SQLPLUS时,它确认这是一个浮点(63)(就像我编写的TOAD和Perl中的另一个脚本一样)-然而,当我使用下面的代码在Java中查询此列时,它返回为一个数字(63)-这是一个奇怪的结果集还是有一个配置我没有完成 顺便说一句,在我使用过的所有其他数据类型上,它都能完美地工作——只是这一种很奇怪 ResultSet rs=stmt.e

所以我一直在用oracle数据库处理ResultSetMetaData

我遇到了一些我无法解释的奇怪事情。我有一个FLOAT列-定义为FLOAT(63)。当我使用SQLPLUS时,它确认这是一个浮点(63)(就像我编写的TOAD和Perl中的另一个脚本一样)-然而,当我使用下面的代码在Java中查询此列时,它返回为一个数字(63)-这是一个奇怪的结果集还是有一个配置我没有完成

顺便说一句,在我使用过的所有其他数据类型上,它都能完美地工作——只是这一种很奇怪

ResultSet rs=stmt.executeQuery("SELECT " + column + " FROM " + schemaTable + " WHERE ROWNUM = 1");
ResultSetMetaData rsmd = rs.getMetaData();

while(rs.next()) {   
            actualType      = rsmd.getColumnTypeName(1);
            actualPrecision = rsmd.getPrecision(1);
无法在Oracle中定义浮点数据类型。在Java中定义一个实数据类型并将其转换为float

建议将实类型的Java映射作为Java浮点

请参阅。

您不能在Oracle中定义浮点数据类型。在Java中定义一个实数据类型并将其转换为float

建议将实类型的Java映射作为Java浮点

参见。

根据甲骨文:

浮点值在内部表示为数字

这可能就是为什么
getMetaData()
返回
Number
,而不是
Float

,根据Oracle的:

浮点值在内部表示为数字


可能这就是为什么
getMetaData()
返回
Number
而不是
Float

它们不相等的原因?你能举例说明它们的区别吗?
NUMBER
是一种浮点数据类型,非常类似于
FLOAT
。我想这是一个不同的命名约定的例子。它们不是等价的吗?你能举例说明它们的区别吗?
NUMBER
是一种浮点数据类型,非常类似于
FLOAT
。我想这是一个不同命名约定的例子。只是有点奇怪,oracle“all_tab_column”表也显示为一个浮点数-如果这是与数字一起返回的,那么这可能是由于浮点数在内部表示为一个数字-不确定为什么会不同?只是有点奇怪,oracle“all_tab_column”表显示为浮点数表中还显示了一个浮点数-如果这是与数字一起返回的,那么这可能是因为浮点数在内部表示为一个数字-不确定为什么会有所不同?