Как получить все пакеты для запроса за один раз, используя хранимую процедуру в Azure SQL DB? - PullRequest
3 голосов
/ 28 марта 2019

Я пытаюсь проверить, есть ли дубликаты в коллекции.Новое в хранимых процедурах и базе данных Azure, поэтому сейчас я пытаюсь подсчитать различные записи.Если count count (имя столбца) = count (имя столбца), дубликатов нет, поэтому я пытаюсь написать хранимую процедуру для этого.Но Azure получает только 100 документов одновременно.Мне нужен счетчик для всех доступных партий.

Мне удалось получить количество отдельных записей, но он показывает счет для первой полученной партии - 100. Мне нужен счет для всех партий.

function sample(prefix) {
    var collection = getContext().getCollection();

    var isAccepted = collection.queryDocuments(
        collection.getSelfLink(),
        'SELECT DISTINCT VALUE r.column FROM root r',
    function (err, feed, options) {
        if (err) throw err;
        if (!feed || !feed.length) {
            var response = getContext().getResponse();
            response.setBody('no docs found');
        }
        else {
            var response = getContext().getResponse();
            response.setBody(JSON.stringify(feed.length));
        }
    });

    if (!isAccepted) throw new Error('The query was not accepted by the server.');
}

Я ожидаю, что результат подсчитает различные записи в коллекции.Это должно быть 103, но на самом деле это 100, то есть число, полученное лазурью за один раз.

1 Ответ

1 голос
/ 29 марта 2019

Значение по умолчанию свойства FeedOptions pageSize для queryDocuments равно 100, что может быть причиной проблемы.Пожалуйста, попробуйте установить значение -1.Следующая хранимая процедура отлично работает на моей стороне, пожалуйста, обратитесь к ней.

function getall(){
 var context = getContext();
  var response = context.getResponse();
  var collection = context.getCollection();
  var collectionLink = collection.getSelfLink();

  var filterQuery = 'SELECT * FROM c';

  collection.queryDocuments(collectionLink, filterQuery, {pageSize:-1 },
    function(err, documents) {
      response.setBody(response.getBody() + JSON.stringify(documents));
    }
  );
}

Надеюсь, это поможет.

...