asp-classic - 不使用 CreateParam 返回 SCOPE_IDENTITY()

标签 asp-classic vbscript adodb

我正在尝试此操作,但出现错误ADODB.Recordset错误'800a0e78'关闭对象时不允许操作。在带有此代码的行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

%>

最佳答案

试试这个:

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

据我了解,如果 SQL Server 没有通过 SET NOCOUNT ON “隐藏”,则 SQL Server 会为实际插入语句返回一个(空)记录集。我认为错误消息是指记录集被关闭,而不是连接。

关于asp-classic - 不使用 CreateParam 返回 SCOPE_IDENTITY(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082218/

相关文章:

VBScript 执行方法不声明变量

asp-classic - 从哪里获取此浏览器信息?

javascript - ScriptControl.AddCode 不执行代码?

sql - 在VBScript中的sql字符串中使用excels命名范围

mysql - 使用 vba 的 MS-Access 前端中的 MySQL 存储过程的多个结果集?

html - 包装表中的列

vbscript - vsdoc 文件适用于 vbscript 吗?

excel - 使用 SSIS 脚本任务刷新 Excel

php mysql adodb

ms-access - HOWTO : Open an ADODB recordset from a command object that allows updating?