我希望有人能给我一些关于我的 vb 脚本的新视角。该脚本的主要目的是使用一些参数执行存储过程。
我得到的错误是
“预计声明结束”
我没有做过太多的 VB 脚本编写,但从目前为止我发现的情况来看,这个错误是由于某种语法问题造成的。我已经查看这个脚本好几个小时了,但看不到任何明显的东西。我只能假设这取决于声明adArray
(这在我眼中看起来不太正确,但我还没有找到任何这样声明的例子)。仅当我开始添加更多参数时才引入此错误。
Code:
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
任何帮助将非常感激。谢谢。
EDIT:
对于那些感兴趣的人 - 我的解决方案是放弃 adArray 并将我的数据作为逗号分隔的 varchar 传递。然后,我使用简单的 split 函数在存储过程中处理这些数据。
我相当确定adArray
尽管 ADO 常量中定义的常量不受 ADO 支持,但添加它是为了将来的兼容性。
From MSDN - ADO API Reference - DataTypeEnum https://msdn.microsoft.com/en-us/library/ms675318(v=vs.85).aspx
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
嗨大卫,
adArray 在 ADO 中不受支持,是为了将来的兼容性而创建的。
你需要实现什么目标?也许我们可以帮助提供另一个解决方案
--
瓦尔马祖尔
微软最有价值专家
检查病毒警报,保持更新
http://www.microsoft.com/security/incident/blast.asp http://www.microsoft.com/security/incident/blast.asp
有用的链接
如何在 VBScript 中使用带有 adArray 数据类型的 ADODB 参数化查询? https://stackoverflow.com/a/9315160/692942 - 建议使用adArray
是可能的。
Carl Prothman - 数据类型映射 http://www.carlprothman.net/Technology/DataTypeMapping/tabid/97/Default.aspx - 我的 ADO 数据类型映射资源。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)