SQL Server 中更新查询后插入

2024-02-01

我有一个存储在存储过程中的更新查询。

我想在执行存储过程后插入更新的查询。 这是我的存储过程。

ALTER PROCEDURE [dbo].[sp_assign_account]
    @id_agency int,
    @month nvarchar(2),
    @regional nvarchar(20),
    @top int,
    @assigned_by nvarchar(20)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE [AMAS].[dbo].[tbl_sample] 
    SET id_agency = @id_agency, 
        status = 'assigned', 
        stage = 'STA', 
        tgl_assign = GETDATE(), 
        assigned_by = @assigned_by  
    WHERE id_sample IN (SELECT  TOP (@top) a.id_sample 
                        FROM [AMAS].[dbo].[tbl_sample] a
                        LEFT JOIN mysystem.lapkeu.dbo.groupbranch b ON a.branch_id = b.BranchID
                        WHERE a.is_delete = '0' 
                          AND a.status = 'not assigned' 
                          AND a.stage = 'AMA' 
                          AND MONTH(a.insert_at) = @month
                          AND a.branch_id IN (SELECT branch_id 
                                              FROM mysystem.lapkeu.dbo.groupbranch 
                                              WHERE GroupBranchID IN (SELECT b.group_branch_id 
                                                                      FROM [AMAS].[dbo].[tbl_collector_agency] a
                                                                      JOIN [AMAS].[dbo].[tbl_area_collector] b ON a.id_collector = b.id_collector
                                                                      WHERE a.id_agency = @id_agency)
        ) 
        ORDER BY NEWID()
    )

    // can i put insert query here??
END

或者我可以得到更新后的id吗?因为我使用随机数据来更新,所以更新前我没有初始化id。


您可以通过使用来实现它Output clause https://learn.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql?view=sql-server-ver15正如@Dale K 的评论

DECLARE @Updated table(id_agency int, .. // Any property as you want)

UPDATE [AMAS].[dbo].[tbl_sample] SET id_agency = @id_agency, status = 'assigned', stage='STA', tgl_assign = getdate(), assigned_by = @assigned_by  
OUTPUT deleted.id_agency // Any property as you want
INTO @Updated
WHERE id_sample 
IN (////)

SELECT * FROM @Updated

From @Updated结果,你可以做你想做的事情:Insert, Select, etc.

阅读以下教程以更好地理解。

https://www.sqlservercentral.com/articles/the-output-clause-for-update-statements https://www.sqlservercentral.com/articles/the-output-clause-for-update-statements

Example

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

SQL Server 中更新查询后插入 的相关文章

  • 如何修改现有表以添加时区

    我有一个包含 500 多个表的大型应用程序 我必须将应用程序转换为时区感知 当前应用程序使用new java util Date GETDATE 与服务器的时区 即没有任何时区支持 我已将这项任务分为几个步骤 以便于开发 我确定的第一个步骤
  • POINT 列上的 MySQL INSERT/UPDATE

    我正在尝试用我国家的地理位置填充我的数据库 我的一张表有 4 个字段 ID PK 纬度 经度和地理点 EDIT SCDBs Punto Geografico SET lat 18 469692 SET lon 63 93212 SET g
  • 如何从 SQL Server 存储过程返回值并在 Access VBA 中使用它们

    我已经在 SQL Server 中设置了一个运行良好的存储过程 我现在可以从 VBA 调用它 但想返回一个值以了解是否存在任何错误等 我的 SP 中的最后一个参数设置为 OUTPUT DataSetID int 0 Destination
  • 如何在mysql中选择具有相同值集的列?

    我的桌子是 patients pid name city disease did dname has disease did pid 我想列出具有相同疾病组的患者 pid 和 did 分别是患者和疾病表中的主键 并且是 has diseas
  • 我怎样才能知道oracle 9i中哪些值是数字

    我有这个包含 varchar 的数据库 我想知道哪些记录保存数值 我试过REGEXP COUNT和其他 但我在 9i 上运行 我认为这是针对 10g gt 我怎样才能实现这个目标 I tried select to number my co
  • java ResultSet,使用MAX sql函数

    你好 这就是我想要的 我连接到数据库并检索 UniqueId 列的最大元素 并将其分配给名为 maxID 的整数变量 这是我的方法 int maxID 0 Statement s2 con createStatement s2 execut
  • 在 PL/SQL 中将绑定变量与动态 SELECT INTO 子句结合使用

    我有一个关于 PL SQL 中的动态 SQL 语句中可以使用绑定变量的问题 例如 我知道这是有效的 CREATE OR REPLACE FUNCTION get num of employees p loc VARCHAR2 p job V
  • 在单个 select 语句中多次有条件地求和同一列?

    我有一个表 显示每个月在给定位置的各种类型的部署的员工部署情况 ID Location ID Date NumEmployees DeploymentType ID 例如 一些记录可能是 1 L1 12 2010 7 1 Permanent
  • 同时使用 GUID 和自动递增整数

    我一直在研究使用 GUID 作为数据库中的主键 到目前为止 利似乎大于弊 然而 我发现 GUID 可能不是我想要的 在我的应用程序中 用户应该能够根据用户友好的 ID 来识别对象 因此 例如 如果他们想要获取特定产品而不输入全名 则可以使用
  • MySql 5.7 ORDER BY 子句不在 GROUP BY 子句中并且包含非聚合列

    我试图在不禁用 my ini 中的 only full group by 的情况下弄清楚 这是我的查询 SELECT p title COUNT t qty AS total FROM payments t LEFT JOIN produc
  • 将 .MDF SQL Server 数据库与 ASP.NET 结合使用与使用 SQL Server

    我目前正在 ASP NET MVC 中编写一个网站 我的数据库 其中还没有任何数据 只有正确的表 使用 SQL Server 2008 我已将其安装在我的开发计算机上 我使用服务器资源管理器从应用程序连接到数据库 然后使用 LINQ to
  • 串行类型的外键 - 确保始终手动填充

    我有两个表 国家和地区 CREATE TABLE Countries id SERIAL name VARCHAR 40 NOT NULL PRIMARY KEY id CREATE TABLE Regions id SERIAL coun
  • 使用 CLR 返回表

    我想编写一个 CLR 过程 它接受一个文本并返回一个包含该文本中所有单词的表 但我不知道如何返回一张桌子 你能告诉我吗 Microsoft SqlServer Server SqlFunction public static WhatTyp
  • SQL:如何在按部分分组的查询中使用子查询?

    如何在按部分分组的查询中使用子查询 我使用 SQL Server 2008 R2 和 Delphi 2010 我收到此错误 Cannot perform an aggregate function on an expression cont
  • SQL Server 2008R2 和创建 XML 文档

    论坛上的第一篇文章 因为我真的被这个问题困住了 以下查询正确地将有效的 XML 文档分配给 xTempXML 变量 类型为 xml 注 文档的长度 转换为varchar max 711 select xTempXML select Pres
  • Sequelize.js 中的自定义或覆盖连接

    我需要使用创建自定义连接条件Sequelize js http sequelizejs com使用 MSSQL 具体来说 我需要加入TableB基于一个COALESCE中的列的值TableA and TableB并最终得到这样的连接条件 L
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • 更改列时快速删除并重新创建多个索引、视图、统计信息

    我的 项目 表中有一个 StoreNumber 列 我想将其更改为 NOT NULL 我最近清理了所有旧数据 以便不存在空条目 但是 当我执行以下语句时 由于对各种视图 索引和统计信息的多重依赖 它失败了 ALTER TABLE Proje
  • 在 SQL Server 上执行分页的最佳方式是什么?

    我有一个数据库超过200万记录 我需要执行分页以在我的 Web 应用程序上显示 该应用程序每页必须有 10 条记录DataGrid 我已经尝试使用ROW NUMBER 但是这种方式会选择所有 200 万条记录 然后只得到 10 条记录 我也
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co

随机推荐

  • 使用继承来反 Postgres 中的反模式 (OTLT)

    我知道 一个真正的查找表 的概念是一种反模式 通常不应该使用 参考网上的许多文章 但是 我想知道当您在 Postgres 中使用表继承时 情况是否仍然如此 您永远不会读取或插入主查找表 它更多地充当其他查找表的模板 您不会失去任何引用完整性
  • 排列 - 所有可能的数字集

    我有从 0 到 8 的数字 我想要结果是这些数字的所有可能集合 每个集合应该使用所有数字 每个数字只能在集合中出现一次 我希望看到用 PHP 制作的可以打印结果的解决方案 或者 至少 我想对组合学理论有所了解 因为我早已忘记了它 计算有多少
  • 如何确定列表中的几个最小值?

    我有一个清单 其中至少有几个 some list 1 4 6 4 1 7 是否有内置函数或任何智能解决方案来获取最小值索引 result 0 4 到目前为止我是这样做的 但我更喜欢更短 更容易阅读的解决方案 min 10 10 result
  • 计划任务在 Windows Server 2008 R2 中不起作用

    我正在尝试通过 Windows Server 2008 R2 中的任务计划程序运行 cmd 我已从服务器计算机中管理员组中的用户登录到服务器 运行计划任务时 上次运行时间 当 状态 已准备就绪时 列的值为 0x1 但什么也没发生 运行 cm
  • Webpack 外部 React 导致 React Hooks 错误

    我是作者FireJS https github com eAdded FireJS 我遇到了一个issue https github com eAdded FireJS issues 4带有反应钩子 node 21793 Unhandled
  • 使用 AAD 身份验证提供程序获取当前登录的用户

    我有一个简单的网站 托管在 Azure 应用服务上 我在其中按照建议的快速设置启用了 AAD 身份验证here https learn microsoft com en us azure app service configure auth
  • 将字符串转换为 URL(为什么结果变量为 nil)

    我正在尝试从字符串值创建 URL 变量 我不明白为什么生成的 URL 为零 我已经设置了一个新的 Xcode macOS 项目 在视图上放置了一个简单的按钮 为该按钮创建了一个操作并实现了以下代码 结果 url 为零 我在 Swift Pl
  • 为什么我的 java 程序在编译时出现“找不到符号”错误?

    我试图在代码末尾返回布尔变量 localFound 的值 但是当我编译时 我收到一条错误 指出它找不到该符号 我知道这是一个处理变量范围的错误 但我不知道如何修复它 如何让我的程序返回正确的值 谢谢 public static boolea
  • 在 OSX 上安装和运行 MongoDB

    如果有人可以在这里提供一些见解 我将非常感激 我在 MongoDB 上成功本地运行了一个express node js 应用程序 但是在重新启动计算机后 我尝试重新启动 Mongo 服务器 但它开始出现错误并且无法启动 从那时起 我重新安装
  • 无法在 REFRESH_TOKEN_AUTH 验证客户端的秘密哈希值

    Problem REFRESH TOKEN AUTH 身份验证流程中的 无法验证客户端的秘密哈希 Error Code NotAuthorizedException Message Unable to verify secret hash
  • 如何在Android应用程序中接受蓝牙接收的文件?

    我想实现一个应用程序从蓝牙设备接收文件 在接收之前 将发出通知以接受传入的文件请求 从那里 我想激活 接受 并自动下载文件 当用户从另一个蓝牙配对设备接收第二个文件时 不会引发接受对话框 并且当用户启动应用程序时不会出现通知干扰 我开发了一
  • which.max 并将 colnames 值分配给 R 中的数据帧[重复]

    这个问题在这里已经有答案了 我想获取最大值并将列名分配回数据框 我试着循环它 有什么建议么 谢谢 new lt data frame id seq 1 5 att1 rnorm 5 1 att2 rnorm 5 1 att3 rnorm 5
  • Cordova 白名单 iOS 10 SSL 错误:无法加载资源:发生 SSL 错误,无法与服务器建立安全连接

    我正在尝试将 ArrayBuffer 发送到 https 1511921174 cloud vimeo com upload ticket id xxxxxxxxxx video file id xxxxxx signature xxxxx
  • 欧拉计划问题 36

    我准备好了我认为这很简单 像往常一样 我显然错了 我正在尝试用 Python 来完成此操作 因为我不懂 Python 我的代码如下 我得到 19 作为输出 这显然是不正确的 我不明白我错过了什么 任何建议 不更正代码 将不胜感激 我不需要正
  • 如何将带有时区的字符串转换为unix时间戳python? [复制]

    这个问题在这里已经有答案了 我有一个从数据库获取的日期时间字符串 我想将其转换为 unix 时间戳 我不知道该怎么做 db timestamp 2020 08 05 12 48 50 02 00 f Y m d H M S z timest
  • 强制转换为泛型类型 (T) 会给出“未经检查的强制转换”警告

    我在这里遇到了一个关于带有列表的泛型有界类型的小问题 请帮忙 模型 java public class Model A类 java public class ClassA
  • Yii2 登录失败时没有错误信息

    我目前正在使用 Yii2 框架 在登录页面中 当我登录失败时 它只会刷新视图 但不会显示任何错误 这是我目前的观点 div class site login div
  • 如何使用 Google Calendar API iOS Swift 创建事件

    我想开发一个演示应用程序 它将使用我的应用程序创建事件 使用 Google Calendar API 存储事件 然后获取所有数据并发出提醒 我已经提到过这个link https developers google com google ap
  • 首先遍历图广度,在 Haskell 中标记访问过的节点

    所以问题很简单 给定一个图 我希望图的结构在这个问题中并不重要 我该如何对其进行 BFS 呢 我最近问了一个关于生成列表的问题 其中每个元素都将许多元素附加到其末尾 希望答案应该能让我创建一个执行 BFS 所需的队列 但是搜索还需要另一个关
  • SQL Server 中更新查询后插入

    我有一个存储在存储过程中的更新查询 我想在执行存储过程后插入更新的查询 这是我的存储过程 ALTER PROCEDURE dbo sp assign account id agency int month nvarchar 2 region