我的IIS7服务器上运行了一组遗留页面至少一年。上周的某个时候发生了变化,现在这一行:
Response.Write CStr(myRS(0).name) & "=" & Cstr(myRS(0).value)
用于返回比字符串更令人兴奋的东西:'Updated = true'(sproc处理输入参数,将它们存储到表中,检查错误以及何时完成所有操作都会通过执行以下语句返回成功代码: 选择'true'作为[Updated]
现在我的页面错误处理程序正在参与并提供:
myError=Error from /logQuizScore.asp
Error source: Microsoft VBScript runtime error
Error number: 13
Error description: Type mismatch
重要的是要注意所有页面使用相同的框架 - 相同的数据库,相同的编码格式,连接字符串和(据我所知)所有其他页面都在工作。
到目前为止的麻烦:
对存储过程的调用正常工作(将东西存储到给定的表中)。存储过程的输出工作正常(我可以使用给定的参数执行直接调用,并且工作正常。我可以看到探测器调用和传递。我可以用'select'true'替换所有代码作为更新'并且错误是同样的。
上面的response.write语句的所有内容都是正确的。
因此改变了ADO呈现特定记录集的方式。
所以我尝试:Response.Write myRS.Item.count
并获得:
错误号码:424 错误描述:需要对象
记录集对象似乎没有实例化,但命令对象_did执行。重复 - 许多其他页面只是相同的基本逻辑,可以毫无问题地点击其他sprocs。
完整代码段
set cmd1 = Server.CreateObject("ADODB.Command")
cmd1.ActiveConnection = MM_cnCompliance4_STRING
cmd1.CommandText = "dbo._usp_UserAnswers_INSERT"
...
cmd1.CommandType = 4
cmd1.CommandTimeout = 0
cmd1.Prepared = true
set myRS = cmd1.Execute
Response.Write CStr(myRS(0).name) & "=" & Cstr(myRS(0).value)
答案 0 :(得分:0)
在我看来,sproc已经改变并返回标量而不是结果集。
更改CommandType = 1
(adCmdText)需要与您的查询更改为SELECT 'whateveryouwannatry' AS [updated]
匹配。
由于您声明asp代码中没有任何内容发生更改,我们可以通过指定输出参数来排除命令/ sproc的返回类型。