不使用CreateParam返回SCOPE_IDENTITY()

Con*_*eak 3 vbscript adodb asp-classic

我正在尝试这个但是ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed.在这行代码上出错了If ScopeID.EOF Then

请不要回答使用该CreateParam方法,寻找没有这种方法的解决方案.谢谢.

<%  
    set Cmd = Server.CreateObject("ADODB.Command")
    Cmd.ActiveConnection = conn

    Cmd.CommandText = "INSERT INTO TABLE (NAME) VALUES ('test')  SELECT SCOPE_IDENTITY() AS ID"
    Cmd.CommandType = 1
    Cmd.CommandTimeout = 0
    Cmd.Prepared = true

    Set ScopeID = Cmd.Execute()

    If ScopeID.EOF Then
        Response.Write "There was an Error in your request, Please try again"
        Response.End
    Else
        ID= ScopeID(0).Value
    End IF

    ScopeID.Close
    Set ScopeID = Nothing
    Set Cmd = Nothing

    Response.Write ID

%>
Run Code Online (Sandbox Code Playgroud)

My *_* Me 5

试试这个:

Cmd.CommandText = "SET NOCOUNT ON; INSERT INTO TABLE (NAME) VALUES ('test'); SET NOCOUNT OFF; SELECT SCOPE_IDENTITY() AS ID"
Run Code Online (Sandbox Code Playgroud)

据我了解,如果SET NOCOUNT ON没有"隐藏",SQL Server会为实际的insert语句返回一个(空)记录集.我认为错误消息是指关闭的记录集,而不是连接.