хранимая процедура возвращает несколько наборов результатов, но число наборов результатов не является фиксированным - PullRequest
1 голос
/ 15 февраля 2011

У меня есть хранимая процедура, которая возвращает переменное число нескольких результирующих наборов.DataReader.NextResult () выдает ошибку, если не существует следующего набора результатов.Как узнать, существуют ли следующие наборы результатов или нет.

Ответы [ 2 ]

4 голосов
/ 15 февраля 2011

Метод NextResult () возвращает true, если есть больше наборов результатов - проверьте это перед следующим чтением

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.nextresult.aspx

0 голосов
/ 01 ноября 2017

(я знаю, что это старый пост, но, надеюсь, это кому-нибудь пригодится!)

Вы можете сделать что-то вроде следующего, если вам нужно обработать неизвестное количество наборов результатов:

// Need to wrap the while loop in a do-while loop due to the way Read() works versus NextResult().
// Read() moves to the next record, if any, starting with the first record.
// NextResult() moves to the next result set, if any, starting with the second result set (i.e., first result set is used automatically).
do
{
    while (mySqlDataReader.Read())
    {
        // Do some processing here...for example:

        var rowValues = new object[mySqlDataReader.FieldCount];
        mySqlDataReader.GetValues(rowValues);

        foreach (var element in rowValues)
        {
            myStringBuilder.Append(element).Append(" | ");
        }

        myStringBuilder.AppendLine();
    }
}
while (mySqlDataReader.NextResult());
...