Автономный скрипт для выполнения хранимой процедуры с параметрами и итерации по возвращенному набору записей

Я пишу VBScript, который выполняет хранимую процедуру с параметрами, которые должны возвращать набор записей из SQL Server.

Я могу выполнять простые команды select и использовать объект recordset. Хранимая процедура возвращает один набор записей столбцов, который я хочу обработать с помощью VBScript. Однако я получаю сообщение об ошибке.

ADODB.Recordset: Элемент не может быть найден в коллекции, соответствующей запрашиваемому имени или порядку.

Я уверен, что я не ошибся с именем столбца.

Вот мой код для справки:

conStr = "Provider=SQLOLEDB;Server=servername,port;Database=db_name;Trusted_Connection=yes;" Set connection = CreateObject("ADODB.Connection") connection.Open conStr Set cmdObj = CreateoOject("ADODB.Command") With cmdObj .ActiveConnection = conStr .CommandType = 4 .CommandText = "my_sp_name" 'This is my SP name .Parameters.Refresh .Parameters(1).Value = "para1" .Parameters(2).Value = "para2" .Parameters(3).Value = "para3" .Parameters(4).Value = "para4" .Parameters(5).Value = "para5" End With 'The SP will be executed after this statement Set recObj = cmdObj.Execute strResult = recObj("time_id") writeFile.WriteLine strResult recObj.MoveNext strResult = recObj("time_id") writeFile.WriteLine strResult recObj.MoveNext recObj.Close Set recObj = Nothing Set cmdObj = nothing 

Как отметил Ланкимарт, я мог бы исправить этот вопрос. Кроме того, я посмотрел на другое сообщение, которое вы упомянули в комментариях. Теперь я изменил свой код на это:

 conStr = "Provider=SQLOLEDB;Server=servername,port;Database=db_name;Trusted_Connection=yes;" Set connection = CreateObject("ADODB.Connection") connection.Open conStr Set cmdObj = CreateoOject("ADODB.Command") With cmdObj .ActiveConnection = conStr .CommandType = 4 .CommandText = "my_sp_name" 'This is my SP name .Parameters.Append(.CreateParameter("@fact_table", 202,1,100)) .Parameters.Append(.CreateParameter("@time_table", 202, 1,100)) .Parameters.Append(.CreateParameter("@sales_column", 202, 1, 100 )) .Parameters.Append(.CreateParameter("@database", 202, 1, 100 )) .Parameters.Append(.CreateParameter("@server", 202, 1, 100)) .Parameters("@fact_table").Value = "dbo.em_fact_sls_daily_Costco" .Parameters("@time_table").Value = "dbo.em_dim_time_iso" .Parameters("@sales_column").Value = "sales_value" .Parameters("@database").Value = "em_csd_mx" .Parameters("@server").Value = "self" End With 'The SP will be executed after this statement Set recObj = cmdObj.Execute strResult = recObj("time_id") writeFile.WriteLine strResult recObj.MoveNext strResult = recObj("time_id") writeFile.WriteLine strResult recObj.MoveNext recObj.Close Set recObj = Nothing Set cmdObj = nothing 

и теперь я получаю сообщение об ошибке

ADODB.Recordset: элемент не может быть найден в коллекции, соответствующей имени или порядку запроса.

в строке Set recObj = cmdObj.Execute .

Давайте будем гением компьютера.