我有一个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
有人可以告诉我我需要的类型,精度,规模,大小等吗?
答案 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
%>
- 表示构建...
对象的假设代码。
ADODB.Command
对象的更完整示例)。