在SQL Server中生成UPDATE语句值的动态列表[已关闭]

aiazj4mn  于 2023-01-12  发布在  SQL Server
关注(0)|答案(1)|浏览(103)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

3天前关闭。
Improve this question
作为"回滚"解决方案的一部分,对于每次更新,我想创建单独的Update语句来撤消值。
所以我们可以执行这个update语句来进行回滚。
我正在寻找通用的更新语句。
要求如下:
我必须传递这些输入参数:

  • 模式名
  • 表名
  • 要更新的列的列表
  • 条件列
  • 条件列的值

当我执行查询时,update语句应该显示在结果集中,以便我可以在rollback文件夹中提交此语句
尝试使用动态查询实现此操作。请对此提供帮助。

polkgigr

polkgigr1#

你可以用下面这样的东西来代替--它本质上是非常通用的:它允许您根据条件提交查询(我在下面的示例中使用了INSERT,但您也可以使用DELETE/UPDATE:

DECLARE @TransactionName VARCHAR(20) = 'Transaction1';

BEGIN TRY
    BEGIN TRAN @TransactionName 
        INSERT INTO TABLE VALUES......;
    COMMIT TRAN @TransactionName
END TRY
BEGIN CATCH

    IF @@TRANCOUNT > 0 
        ROLLBACK TRAN @TransactionName
END CATCH

在上面您可以看到 * 开始CATCH*,然后是 IF @@TRANCOUNT〉0,在这里您可以提及业务规则,以决定是要提交还是回滚事务/SQL查询

相关问题