Sql server 使用Adodb.Command返回作用域\标识()
我有一个Insert语句存储过程,它在Insert之后返回SCOPE_标识,但是,我正在尝试找出在经典ASP中使用ADODB.Command请求之后如何返回它 SP在末尾包含以下内容:Sql server 使用Adodb.Command返回作用域\标识(),sql-server,tsql,ado,Sql Server,Tsql,Ado,我有一个Insert语句存储过程,它在Insert之后返回SCOPE_标识,但是,我正在尝试找出在经典ASP中使用ADODB.Command请求之后如何返回它 SP在末尾包含以下内容: SET @LastID = SCOPE_IDENTITY() -- @LastID is an INT OUTPUT param. 这是在经典ASP代码中处理插入查询时的调用: set SQLCOMM = Server.CreateObject("ADODB.Command") SQLCOMM.ActiveCo
SET @LastID = SCOPE_IDENTITY() -- @LastID is an INT OUTPUT param.
这是在经典ASP代码中处理插入查询时的调用:
set SQLCOMM = Server.CreateObject("ADODB.Command")
SQLCOMM.ActiveConnection = CONNSTRING
SQLCOMM.CommandText = "Insert_SP_Returns_ScopeID"
SQLCOMM.CommandType = 1
SQLCOMM.CommandTimeout = 0
SQLCOMM.Prepared = true
LastIDParameter = SQLCOMM.CreateParameter("@LastID",adInteger,adParamOutput)
SQLCOMM.Parameters.Add(LastIDParameter)
SQLCOMM.Execute()
LastID = LastIDParameter.Value
set SQLCOMM=Nothing
在设置SQLCOMM=Nothing之前,我是否要执行类似的操作
或者。。。是否可以从Adodb.Recordset而不是Adodb.Command执行Insert/Update存储过程
由于以下代码行,正在返回错误:
LastIDParameter = SQLCOMM.CreateParameter("@LastID",adInteger,adParamOutput)
调用存储过程的命令方法很好。您所要做的就是向command对象添加一个额外的输出参数。我已经多年没有做过任何vbscript了,所以我不确定是否应该显式地键入变量 在VB脚本中
set SQLCOMM = Server.CreateObject("ADODB.Command")
SQLCOMM.ActiveConnection = CONNSTRING
SQLCOMM.CommandText = "Insert_SP_Returns_ScopeID"
SQLCOMM.CommandType = 1
SQLCOMM.CommandTimeout = 0
SQLCOMM.Prepared = true
Dim LastIDParameter
Dim LastID
LastIDParameter = SQLCOMM.CreateParameter("@LastID",adInteger,adParamOutput)
SQLCOMM.Parameters.Add(LastIDParameter)
SQLCOMM.Execute()
LastID = LastIDParameter.Value
set SQLCOMM=Nothing
然后在存储过程中
CREATE PROCEDURE Insert_SP_Returns_ScopeID
@Value1 int,
@Value2 int,
@LastID int OUTPUT
AS
INSERT INTO TableName(Value1,Value2) VALUES (@Value1,@Value2)
SET @LastID = SCOPE_IDENTITY()
编辑:您可能需要查找adInteger、adParamOutput的值,并使用这些值,因为可能没有为您的环境定义常量。如果是这样,请使用
SQLCOMM.CreateParameter("@LastID",3,2)
或者定义常量。调用存储过程的命令方法很好。您所要做的就是向command对象添加一个额外的输出参数。我已经多年没有做过任何vbscript了,所以我不确定是否应该显式地键入变量 在VB脚本中
set SQLCOMM = Server.CreateObject("ADODB.Command")
SQLCOMM.ActiveConnection = CONNSTRING
SQLCOMM.CommandText = "Insert_SP_Returns_ScopeID"
SQLCOMM.CommandType = 1
SQLCOMM.CommandTimeout = 0
SQLCOMM.Prepared = true
Dim LastIDParameter
Dim LastID
LastIDParameter = SQLCOMM.CreateParameter("@LastID",adInteger,adParamOutput)
SQLCOMM.Parameters.Add(LastIDParameter)
SQLCOMM.Execute()
LastID = LastIDParameter.Value
set SQLCOMM=Nothing
然后在存储过程中
CREATE PROCEDURE Insert_SP_Returns_ScopeID
@Value1 int,
@Value2 int,
@LastID int OUTPUT
AS
INSERT INTO TableName(Value1,Value2) VALUES (@Value1,@Value2)
SET @LastID = SCOPE_IDENTITY()
编辑:您可能需要查找adInteger、adParamOutput的值,并使用这些值,因为可能没有为您的环境定义常量。如果是这样,请使用
SQLCOMM.CreateParameter("@LastID",3,2)
或者定义常量。实际上,我在这方面遇到了一个错误:ADODB.Command error“800a0bb9”参数的类型错误,超出了可接受的范围,或者相互冲突。导致错误的行:lastdParameter=SQLCOMM。CreateParameter@LastID,adInteger,adparamoutput实际上,我在这方面遇到了一个错误:ADODB.Command error'800a0bb9'参数的类型错误,超出了可接受的范围,或者彼此冲突。导致错误的行:lastdParameter=SQLCOMM。CreateParameter@LastID,ADPTEGER,ADPARAME输出