Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MS SQL Server: забирать результат запроса проциями  [new]
seperblunt
Member

Откуда:
Сообщений: 11
Всем добрый день!

Такая задачка для MS SQL Server: мне нужно выполнить запрос, но забирать результат порциями, при этом между вызовами процедуры "Взять_Очередную_Порцию" нет возможности сохранять на клиенте RecordSet.

Т.е. мне нужно при первом обращении с клиента выполнить запрос и вернуть адрес RecordSet
При последующих запросах с клиента я буду передавать этот адрес и получать следующую порцию данных.

Возможно ли такое?
9 июл 19, 19:04    [21923734]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server: забирать результат запроса проциями  [new]
Relic Hunter
Member

Откуда: AB
Сообщений: 6978
seperblunt,

Курите про pagination.

https://sqlperformance.com/2015/01/t-sql-queries/pagination-with-offset-fetch
9 июл 19, 19:42    [21923760]     Ответить | Цитировать Сообщить модератору
 Re: MS SQL Server: забирать результат запроса проциями  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2263
seperblunt,
using System;
using System.Data;
using System.Data.SqlClient;


class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        ReadOrderData(str);
    }

    private static void ReadOrderData(string connectionString)
    {
        string queryString =
            "SELECT OrderID, CustomerID FROM dbo.Orders;";

        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            SqlCommand command =
                new SqlCommand(queryString, connection);
            connection.Open();

            SqlDataReader reader = command.ExecuteReader();

            // Call Read before accessing data.
            while (reader.Read())
            {
                ReadSingleRow((IDataRecord)reader);
            }

            // Call Close when done reading.
            reader.Close();
        }
    }

    private static void ReadSingleRow(IDataRecord record)
    {
        Console.WriteLine(String.Format("{0}, {1}", record[0], record[1]));
    }

}
9 июл 19, 23:03    [21923845]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить