【问题标题】:C# and SQL Server 2005: Return value and update in one batchC# 和 SQL Server 2005:返回值和批量更新
【发布时间】:2010-07-25 17:16:16
【问题描述】:

只是好奇它是否是可靠的方法来执行以下操作:我需要获取一些值然后更新它,最好是一批。

SELECT X FROM Y //will it be returned if executed in one batch?
UPDATE Y SET X...

作为读者执行?如果有 UPDATE 语句,我不确定它是否会返回。还有一个额外的问题,如果我需要根据某个语句是否成功返回 true 或 false(或任何其他值对)怎么办?

【问题讨论】:

  • 如果您显示您想要执行的特定 SQL 或它的编辑示例,而不是伪代码,那么给出答案会更容易。另外,您的目标是什么数据库服务器?甲骨文、SQL Server、MySql? =)
  • 您要返回之前更新过的数据还是已经更新过的数据?或者只是任何其他数据?

标签: c# sql sql-server-2005


【解决方案1】:
UPDATE Y
OUTPUT --use this
SET X...

OUTPUT 子句允许 SQL Server 2005+(我猜是 c#)

【讨论】:

    【解决方案2】:

    你的问题有点不清楚。如果问题是关于如何在一个语句中更新和选择,请参阅 gbn 的答案。

    如果问题是关于如何执行两个不同的语句,则可以使用 begin-end 块:

    begin
    
      select * from x
    
      update y set a = ...
    
    end
    

    您可以将 CommandType 设置为 text 并使用命令的ExecuteReader 方法。两条语句都将被执行,您将从 select 语句中获得结果集。

    【讨论】:

    • 一个问题:为什么要使用being-end块?我看不出有什么区别。它只是让它“原子”?
    • 是的,就是让它原子化。此外,我不确定它是否可以在没有开始/结束块的情况下工作(但也许我将它与其他数据库混淆了)。
    猜你喜欢
    • 2012-01-10
    • 2014-01-21
    • 1970-01-01
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多