1
Каков правильный способ вызова sproc внутри цикла?Правильный способ повторного использования ADODB.Command
Если я приду в чем-то вроде этого:
Connection = CreateObject("ADODB.Connection")
DO UNTIL RS.EOF
SET cmd = Server.CreateObject ("ADODB.Command")
cmd.ActiveConnection = Connection
cmd.CommandText = "spMySproc"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Append cmd.CreateParameter ("@p1",adInteger,adParamInput, ,RS("Val1"))
cmd.Parameters.Append cmd.CreateParameter ("@p2",adInteger,adParamInput, ,RS("Val2"))
cmd.Execute
SET cmd = nothing
LOOP
Тогда на втором и последующих итераций цикла я получаю сообщение об ошибке
Процедура или функция spMySproc указавшего слишком много аргументов.
Это выглядит разумным, но я совершенно сбит с толку: Когда я запускаю этот пример 'cmd' никогда не получает значение. Если я проверю его в редакторе скриптов, его значение останется «пустым» все время, даже когда я перехожу к строкам, устанавливающим его и его свойства! (И я получаю ошибку 424: Объект, требуемый, когда я пытаюсь выполнить его.) Есть ли что-то странное с областью определения, которую мне нужно учитывать? – feetwet
@feetwet вы можете удалить 'Set cmd = Nothing', если вы не закончили с' cmd'. –
@feetwet Всякий раз, когда я вижу этот шаблон, я дрожу, какая возможная причина для выполнения вызовов базы данных в цикле? Большинство причин, которые люди дают, могут быть сделаны более эффективно, переосмыслив проблему и подгоняя подход. – Lankymart