代码之家  ›  专栏  ›  技术社区  ›  My Other Me

ExecuteReader()之后未更新输出参数

  •  4
  • My Other Me  · 技术社区  · 15 年前

    当我运行cmd.executescalar()或cmd.executenquery()时,命令对象上的输出和输入输出参数将根据存储过程中的更改进行更新。但是,对于cmd.executereader()也不会发生相同的情况。这在SQL Server和MySQL连接上都会发生。这种行为是设计出来的吗?

    3 回复  |  直到 15 年前
        1
  •  9
  •   Blounty    15 年前

    嘿,这对你有帮助。 clicky...

    在某些情况下,这可能是一个问题。

        2
  •  1
  •   Andomar    15 年前

    输出参数只有在读取到记录集末尾后才可用。

    例如,在此过程中:

    alter procedure db.TestProc(@p int output)
    as
    select 1
    select 1
    set @par = 1
    

    只有在读取两个记录集之后,数据库才会设置@par。在读取第一个之前,数据库甚至不会执行第二个选择。它按您的要求传输结果。

        3
  •  0
  •   GShenanigan    15 年前

    您应该能够通过输出参数来检索该值。看看这篇MS支持文章,看看您的问题是否是其中一个: link text

    还有,你想返回什么?如果它只是一个值,那么使用executescalar()而不是executereader()是值得的。