Имам оператор Insert (съхранена процедура), който връща SCOPE_IDENTITY() след вмъкване, но се опитвам да разбера как да го върна, след като използвам ADODB.Command
заявка в Classic ASP.
SP включва това в края:
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
Трябва ли просто да направя нещо подобно, преди да set SQLCOMM=Nothing
?
NewID = SQLCOMM("LastID").Value
ИЛИ... може ли съхранена процедура за вмъкване/актуализиране да бъде изпълнена от Adodb.Recordset
вместо от ADODB.Command
?
The example above gives the following error message:
ADODB.Command error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range,
or are in conflict with one another.
Грешката се връща поради този ред код:
LastIDParameter = SQLCOMM.CreateParameter("@LastID",adInteger,adParamOutput)