【问题标题】:Stored procedure - ADO.NET存储过程 - ADO.NET
【发布时间】:2012-05-10 17:49:30
【问题描述】:

我有一个存储过程:

create procedure sp_PaymentForm_getAll
as
begin
    begin TRAN

    select * from PaymentForm

    WAITFOR DELAY '00:00:10'

    SELECT * FROM PaymentForm pf where pf.ID = 1

    if @@error <> 0
    begin
        rollback
        return
    end

    commit
end

我在 ADO.NET 中调用了这个存储过程,但是 ADO.NET 得到了第一次选择的结果

SELECT * FROM PaymentForm

我想得到第二个SELECT的结果:

SELECT * FROM PaymentForm pf where pf.ID = 1

【问题讨论】:

  • 你为什么会有一个delay
  • 我用它在本地计算机上测试LOCKS &amp; ISOLATION LEVELS

标签: c# sql-server ado.net


【解决方案1】:

【讨论】:

  • 使用 Read() 方法,就像您在其他情况下使用的一样。 NextResult() 只前进到下一个结果集,不做任何实际读取。
【解决方案2】:

您可以添加:

SET NOCOUNT ON;

在您的 SP 的开头,以避免多个结果集。或者,您可以通过使用浏览从您的 SP 返回的多个结果集(如果需要) reader.NextResult()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-13
    • 2023-04-11
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多