我对Oracle应该使用哪种数据类型(@ Number(*,0)
以及零刻度和任何精度感到有点困惑?
我应该使用哪个CF_SQL_INTEGER
或CF_SQL_FLOAT
?为什么?
答案 0 :(得分:4)
根据文档,Number(*,0)
表示您使用的是非常大的整数,即最多38位且没有小数位:
column_name NUMBER (precision, scale)
... 精确度(总位数)和比例(位数到 小数点右边):
column_name NUMBER (*, scale)
在这种情况下,精度为38,指定的比例为 保持。
要存储在CF_SQL_INTEGER
中的数字太多了。要支持全范围,需要具有更大容量的类型。查看标准JDBC Mappings,表示java.sql.Types.NUMERIC
或java.sql.Types.DECIMAL
。这两个都使用java的BigDecimal进行存储,它具有足够的Number(38,0)
容量。
cfqueryparam矩阵和Oracle JDBC driver文档都对DECIMAL类型说了同样的话。由于java.sql.Types.NUMERIC
实际上只是java.sql.Types.DECIMAL
的同义词,因此您可以使用其中任何一个。
注意:使用cfqueryparam时,如果省略" scale"属性,默认为scale =" 0",即无小数位。
<cfqueryparam type="CF_SQL_DECIMAL" scale="0" value="....">