我使用CallableStatement通过Java传递存储过程参数。
但是,当我试图获取一些“NUMBER”类型的值时,我不能用途:
CallableStatement.getLong(1)
因为,所有的“NUMBER”参数都像BigDecimal一样。
有什么想法吗?
例如-数据库内部:
Procedure LookingForSomething(myNumber OUT NUMERIC);
Java:
Long myNumber = CallableStatement.getLong("myNumber"); - doesn't work
1条答案
按热度按时间axr492tv1#
根据JavaDocs of
CallableStatement
方法getLong
...以Java编程语言中的long形式检索JDBC BIGINT参数的值。
而
getBigDecimal
...以java.math.BigDecimal对象的形式检索JDBCNUMERIC参数的值,小数点右侧的数字数与该值所包含的数字数相同。
因此,由于数据库类型是
NUMERIC
而不是BIGINT
,因此必须使用getBigDecimal
。NUMERIC
是一种带有小数位的数据类型,因此long
不能包含所有可能的值,因为它是一种整数数据类型。如果您确定没有收到小数部分,并且您的数字适合
long
,则可以使用有关
longValue()
的详细信息,您可以查看JavaDocs。