【问题标题】:Return SQL Identity to VB Variable on INSERT [duplicate]在 INSERT 上将 SQL 标识返回到 VB 变量 [重复]
【发布时间】:2013-05-10 09:13:32
【问题描述】:

您好,我在下面有一些代码,我希望在执行 SQL 语句时返回结果标识号。

set objCnn = Server.CreateObject("ADODB.connection")

CurrMachine = "my-test-box"

ObjCnn.Open("Provider=SQLOLEDB;Persist Security Info=False;User ID=Test;password=Test123;Language=British;Initial Catalog=TestDB;Data Source=" & CurrMachine)

strSQL = "INSERT INTO dbo.xyz" & _ " (field) " & _ " VALUES  (" & date & ")" & _ " SELECT @@Identity "

objCnn.Execute strSQL

我添加了 SELECT @@Identity,当我在 SQL 中执行此操作时,它将返回唯一的 ID 号。如果我 response.write strSQL 我得到的是 SQL 字符串而不是结果文本。

干杯!

编辑

给你理查德

    set objCnn = Server.CreateObject("ADODB.connection")

    CurrMachine = "my-test-srv"

    ObjCnn.Open("Provider=SQLOLEDB;Persist Security Info=False;User ID=Test;password=Test123;Language=British;Initial Catalog=Test;Data Source=" & CurrMachine)

        strSQL = "INSERT INTO xyz" & _
                " ([date])" & _
                 " VALUES  ( " & date & " )" & _
                 " SET NOCOUNT OFF; SELECT SCOPE_IDENTITY() ID; "

    Set rs = objCnn.Execute(strSQL)
    response.write rs("ID")

【问题讨论】:

  • @gbn 不是正确的重复链接。 asp-classic != c#.net
  • @RichardTheKiwi:够近了
  • @gbn 您的回答涉及身份值的生成。这个问题的答案的症结在于 strSQL 是程序化的,asp-classic - strSQL 在调用.Execute 后不会发生变异。

标签: sql asp-classic ado


【解决方案1】:

ADODB.Connection.Execute 运行一条 SQL 语句,但 没有 修改字符串,所以当您检查(或 response.write)strSQL 时,它当然没有改变 - 仍然包含 SQL 命令文本。

您可以将 SELECT 语句中创建的记录集捕获到 ADODB.recordset 中。

strSQL = "SET NOCOUNT ON; INSERT INTO dbo.xyz" & _
                 " (field) " & _
                 " VALUES  (" & date & ");" & _
                 " SET NOCOUNT OFF; SELECT SCOPE_IDENTITY() ID; "
Dim rs
Set rs = objCnn.Execute(strSQL)
response.write rs("ID")

请注意,您应该使用SCOPE_IDENTITY() 而不是@@IDENTITY,只有极少数例外(如果存在的话)。

【讨论】:

  • 那是失败的代码的 response.write rs("ID") 部分,INSERT 语句仍然有效。
  • 同样的错误:ADODB.Recordset error '800a0cc1' 在与请求的名称或序号对应的集合中找不到项目。 /myAPI/TestHarness.asp,第 87 行
  • 嗨,Richard 已经在上面这样做了,干杯
  • 啊,那就是那个,抱歉错过了:)结果!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-04
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多