Sql server 独立脚本,用于执行带有参数的存储过程并遍历返回的记录集

Sql server 独立脚本,用于执行带有参数的存储过程并遍历返回的记录集,sql-server,vbscript,adodb,recordset,Sql Server,Vbscript,Adodb,Recordset,我正在编写一个VBScript,它执行一个带有参数的存储过程,这些参数应该从SQL Server返回一个记录集 我能够使用recordset对象执行简单的select语句。存储过程返回我要用VBScript处理的单列记录集。然而,我得到了一个错误 ADODB.Recordset:在与请求的名称或序号对应的集合中找不到项 我很确定我在列名上没有犯任何错误 以下是我的代码供参考: conStr=“Provider=SQLOLEDB;Server=servername,port;Database=db

我正在编写一个VBScript,它执行一个带有参数的存储过程,这些参数应该从SQL Server返回一个记录集

我能够使用recordset对象执行简单的select语句。存储过程返回我要用VBScript处理的单列记录集。然而,我得到了一个错误

ADODB.Recordset:在与请求的名称或序号对应的集合中找不到项

我很确定我在列名上没有犯任何错误

以下是我的代码供参考:

conStr=“Provider=SQLOLEDB;Server=servername,port;Database=db\u name;Trusted\u Connection=yes;”
Set connection=CreateObject(“ADODB.connection”)
连接,连接
Set cmdObj=CreateoOject(“ADODB.Command”)
使用cmdObj
.ActiveConnection=conStr
.CommandType=4
.CommandText=“my_sp_name”'这是我的sp名称
.Parameters.Refresh
.参数(1).Value=“para1”
.参数(2).Value=“para2”
.参数(3).Value=“para3”
.参数(4).Value=“para4”
.参数(5).Value=“para5”
以
'SP将在此语句之后执行
Set recObj=cmdObj.Execute
strResult=recObj(“时间id”)
writeFile.WriteLine strResult
下一步
strResult=recObj(“时间id”)
writeFile.WriteLine strResult
下一步
重新开始,结束
Set recObj=无
Set cmdObj=nothing
正如兰克马特指出的那样,我可以纠正这个问题。另外,我看了你在评论中提到的另一篇文章。现在我将代码更改为:

conStr=“Provider=SQLOLEDB;Server=servername,port;Database=db\u name;Trusted\u Connection=yes;”
Set connection=CreateObject(“ADODB.connection”)
连接,连接
Set cmdObj=CreateoOject(“ADODB.Command”)
使用cmdObj
.ActiveConnection=conStr
.CommandType=4
.CommandText=“my_sp_name”'这是我的sp名称
.Parameters.Append(.CreateParameter(“@fact_table”,202,1100))
.Parameters.Append(.CreateParameter(“@time_table”,2021100))
.Parameters.Append(.CreateParameter(“@sales_列”,202,1100))
.Parameters.Append(.CreateParameter(“@database”,202,1100))
.Parameters.Append(.CreateParameter(“@server”,202,1100))
.Parameters(“@fact\u table”).Value=“dbo.em\u fact\u sls\u daily\u Costco”
.Parameters(“@time\u table”).Value=“dbo.em\u dim\u time\u iso”
.Parameters(“@sales\u column”).Value=“sales\u Value”
.Parameters(“@database”).Value=“em\u csd\u mx”
.Parameters(“@server”).Value=“self”
以
'SP将在此语句之后执行
Set recObj=cmdObj.Execute
strResult=recObj(“时间id”)
writeFile.WriteLine strResult
下一步
strResult=recObj(“时间id”)
writeFile.WriteLine strResult
下一步
重新开始,结束
Set recObj=无
Set cmdObj=nothing
现在我得到一个错误

ADODB.Recordset:在与重新设置的名称或序号对应的集合中找不到项


在行
Set recObj=cmdObj.Execute

中,与VBScript中的大多数集合一样,
参数
集合从序号位置0开始。如果有5个参数,则第一个参数为0,最后一个参数为4。错误是由于
参数(5)
不存在,因为这将引用第六个参数。感谢快速回复,我将使用
参数检查并在此处发布。刷新
并不理想,因为需要再次访问SQL Server来计算参数。如果您知道需要什么,请使用
.CreateParameter()
.Parameters.Append()
方法手动将它们添加到
Parameters
集合中。如何定义它们的示例。