哪个cfsqltype用于cfqueryparam中Oracle的Number(*,0)数据类型?

时间:2016-04-01 05:28:48

标签: oracle coldfusion oracle10g coldfusion-10 cfqueryparam

我对Oracle应该使用哪种数据类型(@ Number(*,0)以及零刻度和任何精度感到有点困惑?

我应该使用哪个CF_SQL_INTEGERCF_SQL_FLOAT?为什么?

1 个答案:

答案 0 :(得分:4)

根据文档,Number(*,0)表示您使用的是非常大的整数,即最多38位且没有小数位:

  

column_name NUMBER (precision, scale)

     

... 精确度(总位数)和比例(位数到   小数点右边):

     

column_name NUMBER (*, scale)

     

在这种情况下,精度为38,指定的比例为   保持。

要存储在CF_SQL_INTEGER中的数字太多了。要支持全范围,需要具有更大容量的类型。查看标准JDBC Mappings,表示java.sql.Types.NUMERICjava.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="....">