经典ASP ADO.PARAMETER映射到Oracle 10g NUMBER数据类型

时间:2017-04-04 17:52:00

标签: oracle vbscript asp-classic ado

我有一个Oracle 10g数据库,其字段定义为NUMBER。我正在将一个经典的ASP(vbscript)从内联sql转换为参数化。我无法将ADO.PARAMETER映射到NUMBER。我得到的是“参数对象定义不正确。提供的信息不一致或不完整。”我已经尝试了十进制,数字,精度和比例,int,bigint,varchar,大小以及我能想到的所有组合。

Dim param
Set param = Server.CreateObject("ADODB.Parameter")
param.Type = ? ' adDecimal
param.Precision = ? ' 38
param.NumericScale = ? ' 0
param.size = ?
.Value = MYNUMBER

有人可以告诉我我需要的类型,精度,规模,大小等吗?

1 个答案:

答案 0 :(得分:1)

我会考虑使用CreateParameter()对象的ADODB.Command方法正确构建参数。它可能不是您传递的数据类型或精度等问题,而是缺少未设置的Parameter对象的属性(例如{{1}例如)或命名常量未定义。

考虑到这个特定的例子,我查找了预期的数据类型命名常量为Oracle的Direction数据类型,并根据Carl Prothman - Data Type Mapping (一个很好的映射资源) ADO常量到各种数据源)你应该使用NUMBER adNumeric。有了这些信息,我就会像这样构建参数;

131

<% Dim cmd: Set cmd = Server.CreateObject("ADODB.Command") With cmd ... 'Define parameters Call .Parameter.Append(.CreateParameter("par1", adNumeric, adParamInput, 9)) ... 'Set Parameter values .Parameter("par1").Value = MYNUMBER ... End With %> - 表示构建...对象的假设代码。

有用的链接