ODBC SQL 服务器存储过程未返回所有行

ODBC SQL Server Stored Procedure Not Returning All Rows

我正在尝试在我的存储过程中使用 ExecuteReader 来获取费率列表。这是我期待的来自 SSMS 的输出。我只从 reader 中得到一行,而不是我应该得到的 35 行。

我用来尝试实现此目的的代码是

OdbcCommand ratesCmd = new OdbcCommand("EXEC SP_LABOR_MODELS ?,?", rfqCon);
ratesCmd.CommandType = CommandType.StoredProcedure;

OdbcParameter initParam = new OdbcParameter("@init", 1);
OdbcParameter calcrefParam = new OdbcParameter("@calcrefid", DBNull.Value);

rfqCon.Open();

ratesCmd.Parameters.Add(initParam);
ratesCmd.Parameters.Add(calcrefParam);

OdbcDataReader ratesReader = ratesCmd.ExecuteReader();
while(ratesReader.Read()) {
   if(reader[0] != DBNull.Value){
   }
   if(reader[1] != DBNull.Value){
      //Fails here & says index was outside the bounds of the array.
      //There should be 35 rows that get returned to the reader.
   }
}

我已经尝试了很多事情,比如尝试改变我在存储过程上调用执行的方式。

= new OdbcCommand("{call SP_LABOR_MODELS(?,?)}", rfqCon);

您遇到的问题是 returned 的记录只有一个字段,但 reader[1] 正在尝试访问第二个字段。 reader一次暴露一条记录,索引引用记录中的column/field。在 while 循环中,调用 ratesReader.Read() 将加载下一条记录,当到达记录集的末尾时,Read() 方法将 return false 并退出循环。