获取新插入行的值

时间:2017-05-11 15:42:22

标签: sql-server vbscript

我试图通过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访问时收到错误

1 个答案:

答案 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