当前位置: 首页 > 面试题库 >

批处理sqlclient命令中的Scope_identity()

吴炎彬
2023-03-14
问题内容

我通常在插入记录时使用存储过程,以确保获得正确的scope_identity()值。我现在需要使用SqlClient时获取插入记录的id字段。

我的理解是,如果我使用插入命令对scope_identity()命令进行批处理,那么它将仍然与insert命令处于同一范围内?像下面这样。虽然很难验证…我会100%以此得到正确的ID值吗?

(id字段是一个自动递增的bigint-SQL Server)

long newid = 0;

using (SqlConnection conn = new SqlConnection(....))
{
    conn.Open();
    using (SqlCommand comm = new SqlCommand ("insert into .... ; select SCOPE_IDENTITY();", conn))
    {
        SqlDataReader reader = comm.ExecuteReader();
        if (reader.HasRows)
        {
            reader.Read();
            newid = Convert.ToInt64(reader[0]);
        }
    }
}

问题答案:

SCOPE_IDENTITY(重点为我的)文档中:

返回插入到同一作用域的标识列中的最后一个标识值。范围是一个模块:存储过程,触发器,函数 或批处理 。因此,如果两个语句位于相同的存储过程,函数
或batch中 ,则它们在同一范围内。

在这种情况下,您的命令:

"insert into .... ; select SCOPE_IDENTITY();"

是批处理,因此,您将获得该批处理中最后插入的标识值,在这种情况下,它是插入项中的标识值,因为它是批处理中唯一的其他语句。



 类似资料:
  • 在本章中,我们来看一看一些经常使用的批处理命令。如下图中所示 - 编号 命令 描述 1 VER 此批处理命令显示正在使用的MS-DOS的版本。 2 ASSOC 这是将扩展名与文件类型(FTYPE)相关联的批处理命令,显示现有关联或删除关联。 3 CD 此批处理命令用于更改进入不同的目录,或显示当前目录。 4 CLS 这个批处理命令清除屏幕。 5 COPY 此批处理命令用于将文件从一个位置复制到另一

  • 本文向大家介绍批处理命令教学之tree命令,包括了批处理命令教学之tree命令的使用技巧和注意事项,需要的朋友参考一下 tree ,在英语中的基本含义是“树”,在cmd中,tree命令的功能是以树形格式罗列文件。 当你向别人展示你自己所做光盘的内容的时候,或者是罗列你硬盘上某个目录下的资料的时候,tree命令显得相当方便,并且能让你展示的内容层次分明,井井有条。啥也不说了,上图,顺便温习一下cd命

  • 本文向大家介绍批处理命令教学之more命令,包括了批处理命令教学之more命令的使用技巧和注意事项,需要的朋友参考一下 帮助信息: 逐屏显示输出。 命令概括: more,意为“更多”,这里可以引申为“除这些外还有……” /e,enable Expansion,意为“允许扩展“。 /c,clear,意为”清除“。 /p,expand,意为”扩展“。 /s,squeeze,意为”挤;压榨“。”挤“字已

  • 本文向大家介绍DOS 批处理命令For循环命令详解,包括了DOS 批处理命令For循环命令详解的使用技巧和注意事项,需要的朋友参考一下 for命令是一种对一系列对象依次循环执行同一个或多个命令的在命令行或批处理中运行的命令,结合一些Windows管理中的程序后,其处理功能强大、应用灵活方便程度令人刮目相看。但是,其帮助信息也因此复杂往往令初学者望而生畏,这里根据本人的学习理解,把其用法分解简化,疏

  • 问题内容: 我正在Windows 7上运行詹金斯服务。 我想做一个非常简单的工作,这将启动我的Firefox。(例如) 我配置了一个自由样式项目,并设置了“执行Windows批处理命令”选项。 在这里,我尝试插入几条命令,但它们均失败了。 像“ echo hello”之类的命令或其他本机命令按预期工作。 但是类似“ explorer”的命令-应该打开提到的目录,否则“ c:\ firefox.ln