存储过程输出参数+选择不传回输出参数

4 c# parameters datareader

我有一个存储过程返回两个记录集,我使用GetReader调用.我迭代第一个,调用IDataReader.NextResult(),然后迭代第二个.

我为sp中的输出参数赋值,但是当我用读者完成后检查值时,我的输出参数为空.看起来像个bug.我不想使用选择,因为我不喜欢软糖.一些片段......

...

sp.Command.AddParameter("@SelectedTabID", selectedTabID, DbType.Int32);
sp.Command.AddParameter("@CurrentTabID", 0, DbType.Int32, ParameterDirection.Output);
sp.Command.AddParameter("@TypeID", 0, DbType.Int32, ParameterDirection.Output);
Run Code Online (Sandbox Code Playgroud)

(注意这样做或使用AddOutputParameter()产生相同的结果)

...

using(IDataReader reader = sp.GetReader())
{
  while (reader.Read()) {...}
  if (reader.NextResult()) {while (reader.Read()) {...}}

}
Run Code Online (Sandbox Code Playgroud)

...

int one = (int)sp.OutputValues[0]; //null expected an int
int two = (int)sp.OutputValues[1]; //null expected an int
Run Code Online (Sandbox Code Playgroud)

期待一些智慧的宝石:)

Ami*_*ila 5

您需要先关闭阅读器然后检索输出参数.读取器打开时,输出参数返回null.

更多信息可以在这里找到 http://amilagm.com/2010/11/output-variable-values-not-returned-from-sql-server-sp-in-c-sharp/

希望这可以帮助.