gpt4 book ai didi

java - 甲骨文 ResultSetMetaData getPrecision/getScale

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:59:06 24 4
gpt4 key购买 nike

我正在使用 Oracle 的 JDBC 瘦驱动程序 (10.2.0.3) 连接到 Oracle 10g 数据库。我想获取有关数据库列的信息,所以我使用 ResultSetMetaData .我需要的最重要的信息是列的类型和长度,所以我使用 getColumnType , getPrecision , 和 getScale方法。

它适用于简单查询(select * from tablename),如果列类型是“简单”的,比如 VARCHAR2(50), NUMBER(5), NUMBER(6,2) 。如果我有更复杂的查询(select count(*) from tablename)或基于包含一些复杂计算的 View 的查询,这些方法会给出奇怪的结果,例如:

  • getScale:-127
  • getPrecisiongetScale 都是 0
  • getPrecision: -1

oracle.jdbc.J2EE13Compliant 连接属性设置为 true(如多个网页所建议的那样)消除了 getScale=-127 但仍返回 0/0 结果。

很可能我必须为这些奇怪的结果创建一个解决方法,但首先我至少需要一份关于 Oracle 的 ResultSetMetaData 行为的综合文档。例如,对于所有 SQL 类型都具有 getPrecision/getScale 意义的巨大表会很棒。某处有这样的文档吗?

最佳答案

Oracle 无法返回基于 View 或 count(*) 的类型,因为它未明确声明。您的 View 可以根据 View 的底层表返回任何精度或比例。

要克服这个问题,您需要像这样在查询或 View 中转换类型:

select CAST (count(*) AS NUMBER(30))

关于java - 甲骨文 ResultSetMetaData getPrecision/getScale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1410267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com