我试图通过vbscript
来区分以下sql查询declare @approvalid int, @userId int
insert into [ApprovalMaster] ([Active], [DateCreated]) values('true',getdate())
set @approvalid =SCOPE_IDENTITY()
insert into [UserTable] ([Emailid], [password], [approvalid])
values('testmail.com','password', @approvalid)
Set @userid=SCOPE_IDENTITY()
Select @userid as [Userid]
set rsemail=server.CreateObject("Adodb.Recordset")
rsemail.open sqlstr,con
response.write rsemail("userid")
并收到以下错误
ADODB.Recordset错误' 800a0cc1'
无法在与请求的名称或序号对应的集合中找到项目。
这些声明在SQL Server管理工作室中很好用 但通过vbscript访问时收到错误
答案 0 :(得分:0)
发生这种情况的原因是不产生ADODB.Recordset
但输出计数的操作在ADODB中被解释为关闭的Recordset
对象。
这意味着您致电
rsemail.open sqlstr,con
您实际上是从第一个ADODB.Recordset
语句的输出计数中返回已关闭的INSERT
,而不是按预期返回SELECT
。
修复很简单,was suggested在评论中由@GarethD完成。
尝试将
SET NOCOUNT ON
添加到查询的开头
此行为还有其他解决方法(但设置NOCOUNT ON
是迄今为止最简单的。
您可以使用NextRecordset
在查询中的下一个ADODB.Recordset
返回,这将是第二个INSERT
,但是第三次调用它将返回{{1}的结果}。
SELECT