adArray 的 VBScript/ADODB 语法问题?

VBScript / ADODB Syntax Issue with adArray?

我希望有人可以让我对我的 vb 脚本有一些新的看法。该脚本的主要目的是使用一些参数执行存储过程。

我得到的错误是

'Expected end of statement'

我没有做过多少 VB 脚本编写,但从我目前发现的情况来看 - 此错误已归结为某种语法问题。我已经查看了这个脚本很多个小时,但看不到任何明显的东西。我只能假设它取决于 adArray 的声明(这在我看来不正确,但我无法找到任何声明的例子)。当我开始添加更多参数时才引入此错误。

代码:

Const adVarChar = 200
Const adParamInput = 1
Const adArray = 0x2000

Dim cmd
Dim sp
Dim intCode
Dim addIn
Dim groupCode
Dim screens
Dim arrScreens
arrScreens=split(LF06,",")

Set cmd=CreateObject("ADODB.Command")
sp="vfile_dev.dbo.vfp_groupReorder"

Set intCode=CreateObject("ADODB.Parameter")
intCode.Direction=adParamInput
intCode.name="@p_intCode"
intCode.Size=100
intCode.Type=adVarChar
intCode.Value=LF03

Set addIn=CreateObject("ADODB.Parameter")
addIn.Direction=adParamInput
addIn.name="@p_addIn"
addIn.Size=100
addIn.Type=adVarChar
addIn.Value=LF04

Set groupCode=CreateObject("ADODB.Parameter")
groupCode.Direction=adParamInput
groupCode.name="@p_groupCode"
groupCode.Size=100
groupCode.Type=adVarChar
groupCode.Value=LF05

Set screens=CreateObject("ADODB.Parameter")
screens.Direction=adParamInput
screens.name="@p_screens"
screens.Size=100
screens.Type=adArray
screens.Value=arrScreens

With cmd
   .ActiveCOnnection = "Provider='sqloledb';Data source='xxx';Integrated Security='SSPI';"
   .CommandType = 4
   .CommandText = sp
   .Parameters.Append intCode
   .Parameters.Append addIn
   .Parameters.Append groupCode
   .Parameters.Append screens
   .Execute
End With

Set cmd = Nothing
Set sp = Nothing
Set intCode = Nothing
Set addIn = Nothing
Set groupCode = Nothing

如有任何帮助,我们将不胜感激。谢谢

编辑:

对于那些感兴趣的人 - 我的解决方案是放弃 adArray 并将我的数据作为逗号分隔的 varchar 传递。然后,我使用简单的拆分函数在我的存储过程中处理这些数据。

我相当确定 adArray 虽然在 ADO 常量中定义不受 ADO 支持并且是为了将来的兼容性而添加的。

From MSDN - ADO API Reference - DataTypeEnum
A flag value, always combined with another data type constant, that indicates an array of the other data type. Does not apply to ADOX.

此定义建议它只能与另一个 ADO DataTypeEnum 常量值一起使用,以表示该数据类型的 Array

虽然有人建议 OR 使用另一个 DataTypeEnum 常量计算值应该有效,但我在 12 年前发现了这个。

From the ADO public newsgroup (microsoft.public.ado)
Discussion: how to use AdArray data type with sql server 7 and stored procedures
Date: 2003-09-29 19:24:10 UTC


Hi David,

adArray is not supported in ADO and was created for future compatibility. What do you need to achieve? Maybe we could help with another solution
--
Val Mazur
Microsoft MVP
Check Virus Alert, stay updated
http://www.microsoft.com/security/incident/blast.asp


有用的链接

  • How to use ADODB parameterized query with adArray data type in VBScript? - 建议使用 adArray 是可行的。

  • Carl Prothman - Data Type Mapping - 我转到 ADO 数据类型映射资源。