ExecuteReader()后输出参数未更新

时间:2009-10-16 10:20:57

标签: c# sql mysql database

当我运行cmd.ExecuteScalar()或cmd.ExecuteNonQuery()时,命令对象上的Output和InputOutput参数将从存储过程中的更改中更新。但是cmd.ExecuteReader()也不会发生同样的情况。这在Sql Server和MySql Connections上都会发生。这是设计的行为吗?

3 个答案:

答案 0 :(得分:9)

嘿,这可能对你有所帮助。 clicky...

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

答案 1 :(得分:1)

输出参数仅在您读取到记录集的末尾后才可用。

例如,在此过程中:

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

只有在读取了两个记录集后,数据库才会设置@par。在您完成第一个SELECT读取之前,数据库甚至不会执行第二个SELECT。它是您请求时的流式传输结果。

答案 2 :(得分:0)

您应该能够通过Output参数检索值。请查看此MS支持文章,看看您的问题是否是上述问题之一:link text

另外,你想回来的是什么?如果它只是一个值,那么使用ExecuteScalar()而不是ExecuteReader()是值得的。