【问题标题】:VBScript / ADODB Syntax Issue with adArray?adArray 的 VBScript / ADODB 语法问题?
【发布时间】:2016-02-17 09:49:34
【问题描述】:

我希望有人可以让我对我的 vb 脚本有所了解。这个脚本的主要目的是使用一些参数来执行一个存储过程。

我得到的错误是

'预期语句结束'

我没有编写过多的 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 传递。然后我使用简单的拆分函数在我的存储过程中处理这些数据。

【问题讨论】:

  • SQL Server 是否支持screens.Type=adArray?这是整个脚本吗?
  • 究竟是哪一行引发了错误?
  • 这是一个有用的资源,我已经使用了很长时间,因为我的 ADO Data Type Bible 我很确定 adArray 在 ADO 中不受支持,并且是为了将来的兼容性而添加的。跨度>
  • 我认为它会被支持?是的,这就是整个脚本.. 至少是它的 VBscript 方面。 (LFXX 变量在脚本之外声明并传入)。

标签: sql-server vbscript oledb ado adodb


【解决方案1】:

我很确定 adArray 虽然在 ADO 常量中定义不受 ADO 支持,但为了将来的兼容性而添加。

来自MSDN - ADO API Reference - DataTypeEnum
一个标志值,总是与另一个数据类型常量组合,表示另一个数据类型的数组。不适用于 ADOX。

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

虽然有人建议OR使用另一个 DataTypeEnum 常量的值应该可以工作,但我在 12 年前发现了这一点。

来自 ADO 公共新闻组(microsoft.public.ado)
讨论:如何在 sql server 7 和存储过程中使用 AdArray 数据类型
日期:2003-09-29 19:24:10 UTC


嗨,大卫,

adArray 在 ADO 中不受支持,它是为将来的兼容性而创建的。 你需要达到什么目标?也许我们可以提供其他解决方案
--
瓦尔马祖尔
微软 MVP
检查病毒警报,保持更新
http://www.microsoft.com/security/incident/blast.asp


有用的链接

【讨论】:

  • 在这种情况下,我可能需要另一种解决方案。数组总是很小,所以我想我可以将它作为逗号分隔的字符串传递。感谢您的信息!
猜你喜欢
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2010-11-20
  • 2015-07-08
相关资源
最近更新 更多