存储过程 - 返回标识作为输出参数或标量

2024-04-30

当您将记录插入到具有标识列的表中时,可以使用 SCOPE_IDENTITY() 来获取该值。在存储过程的上下文中,这将是返回标识值的推荐方法:

  1. 作为输出参数SET @RETURN_VALUE = SCOPE_IDENTITY()
  2. 作为标量SELECT SCOPE_IDENTITY()
  3. 其他方式?

各有什么优点/缺点?


另一种选择是作为存储过程的返回值(不过我不建议这样做,因为这通常最适合错误值)。

当存储过程被其他 SQL 过程和无法使用 OUTPUT 参数(我相信 .NET 中的 IBATIS)使用的前端使用时,我将其插入单行:

CREATE PROCEDURE My_Insert
    @col1            VARCHAR(20),
    @new_identity    INT    OUTPUT
AS
BEGIN
    SET NOCOUNT ON

    INSERT INTO My_Table (col1)
    VALUES (@col1)

    SELECT @new_identity = SCOPE_IDENTITY()

    SELECT @new_identity AS id

    RETURN
END

当从其他存储过程调用时,输出参数在 T-SQL 中更容易使用(IMO),但某些编程语言对输出参数的支持很差或不支持,并且可以更好地处理结果集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

存储过程 - 返回标识作为输出参数或标量 的相关文章

随机推荐

  • 使用 pycassa 读取 Cassandra 1.2 表

    使用卡桑德拉 1 2 我按以下方式使用 CQL 3 创建了一个表 CREATE TABLE foo user text PRIMARY KEY emails set
  • python 中的关键字参数别名

    我总是觉得奇怪的是 有一些关键字参数 或参数 可以传递给函数或 init 类的方法 如何防止不熟悉您的代码的用户犯错误 如何让用户立即 几乎本能地 熟悉您的代码 而无需编写糟糕或冗长的文档 或者进行多次试验和错误 从而阻止用户快速 舒适地使
  • Vue cli 3项目,图像路径中的动态src不起作用

    我在 vue 组件中引用图像 url 例如 img alt Vue logo src statics reports logo png 这有效 但在尝试的同时 img alt Vue logo data return imgPath sta
  • Oracle 中的 MD5 (DBMS_OBFUSCATION_TOOLKIT.MD5)

    我正在尝试编写一个函数 从我到处收集的位中获取 MD5 哈希值 我想获得哈希的小写十六进制表示 到目前为止我有这个 CREATE OR REPLACE FUNCTION MD5 CADENA IN VARCHAR2 RETURN DBMS
  • 尽管不在形式中,但 Rails 属性会发生变化

    我有 Rails 应用程序 用户可以在其中互相分配任务 每个任务都有一名分配者和一名执行者 默认情况下 任务创建者 当前用户 始终是分配者 分配者和执行者都可以编辑同一个任务 我的问题如下 假设 user id 2 是分配者 user id
  • HTML5 svg 标签和 alt 属性

    不是 HTML 方面的专家 也不是检查 HTML 解析器的正确行为的专家 根据 html5 寻找正确的行为不好或预期 我们可以稍后处理 在新的 HTML5 标签中放置 alt 属性是否有效
  • Spring Boot 忽略 @JsonDeserialize 和 @JsonSerialize

    我有一个带有 RESTful 端点的 Spring Boot 应用程序 我想向其中添加自定义序列化器乔达时间 http www joda org joda time 但我无法让应用程序默认 Jackson Serailzier 识别我的自定
  • Pandas DataFrame:在我想要保留的内容之前和之后从字符串中删除不需要的部分

    在我的 data cleaner 数据集中 我有列 功能 项目 ID 这标识了项目 其格式为 代码 年份 代码 我只对项目的年份感兴趣 所以我想删除第一个 之前的所有内容和第二个 之后的所有内容 Project ID AGPG 2013 1
  • 使用 Facebook OAuth 2.0 - 如何获取访问令牌?

    我是新来的OAuth http en wikipedia org wiki OAuth 我正在尝试使用脸书连接 http en wikipedia org wiki Facebook Platform Facebook Connect与我的
  • C# 排序列表 - 快速,具有可移动、重复的键

    我制作了一个带有压缩机制的应用程序 需要我自己的字典 我的应用程序中的每个 cicle 都会将新元素添加到 myDictionary 中并更新 向 myDictionary 中的一些先前元素添加一个字符 我用普通列表和快速排序函数来做到这一
  • 了解 Windows 10 何时处于平板电脑模式 - Windows 10 / Windows 10 Mobile

    我致力于开发适用于 Windows 10 和 Windows 10 Mobile 的通用应用程序 有谁知道如何检查 Windows 10 是否在平板电脑模式下运行 我在这里找到了这个问题 但这是针对 Windows 窗体的 如何在 Wind
  • 如何使用Lodash根据一个键合并两个集合?

    我有两个集合 这些对象有一个公共键 userId 如下 var require lodash var a userId p1 item 1 userId p2 item 2 userId p3 item 4 var b userId p1
  • PostgreSQL 逻辑复制 - 创建订阅挂起

    我正在尝试在 Debian 9 和 PG 11 1 的 2 个云实例之间设置逻辑复制 命令CREATE PUBLICATION在 master 上成功了 但是当我启动命令时CREATE SUBSCRIPTION在预期的逻辑副本上 该命令无限
  • 您可以在 @Helper 中使用 @Helper 吗?

    我不确定这是否可能 我有一堆 Helper位于视图内以及其他视图中 helper ViewHelper1 helper ViewHelper2 etc 我有在视图和其他视图中使用的重复代码 if Model Entity Model Enu
  • relativelayout/customview 不填充选项卡的宽度

    我正在尝试用视图填充选项卡 有关我尝试通过视图实现的确切目标的更多信息 请阅读我之前的问题 如何自定义各个选项卡 更改背景颜色 指示器颜色和文本颜色 https stackoverflow com questions 21335267 ho
  • 捕获 Node js 应用程序的所有 uncaughtException

    我有一个问题 如何处理我的节点应用程序的所有未捕获的异常 操作 开发人员错误将导致所有服务停止 然后 每当发现错误时 我就可以向我发送电子邮件警报 您可以使用process https nodejs org api process html
  • 由于 JavaScript 没有太多权限,病毒如何通过浏览器进入 PC?

    我想知道浏览器如何允许病毒传播到我们的计算机 我们收到的响应是文本响应 响应中唯一可执行的东西是 JavaScript 它没有太多权限 是什么让浏览器倾向于将某些文件传递到计算机 短名单 浏览器插件 一般来说 ActiveX 尤其是 Fla
  • 获取作业格式表以及作业的运行时间

    我正在尝试编写一个 PowerShell 5 1 脚本来监视作业 我在编写正确的 获取工作 表时遇到问题 以下是我所拥有的 Get Job Format Table AutoSize Property name state name Run
  • 连接到 Hive 时使用 Spark 进行 Kinit

    我正在尝试从独立的 Spark 连接到 Hive hadoop 集群具有 kerberos 身份验证 有人可以让我知道如何在 Spark 程序中执行 kinit 我可以连接到配置单元吗 更新 我的 Spark 与 Hadoop 位于不同的集
  • 存储过程 - 返回标识作为输出参数或标量

    当您将记录插入到具有标识列的表中时 可以使用 SCOPE IDENTITY 来获取该值 在存储过程的上下文中 这将是返回标识值的推荐方法 作为输出参数SET RETURN VALUE SCOPE IDENTITY 作为标量SELECT SC