Member 10977208 Ответов: 1

Как получить данные из хранимой процедуры, когда счетчик не включен?


Всем Привет,

Я просмотрел много статей и обнаружил, что
SET NOCOUNT ON;
рекомендуется, когда вы работаете с хранимыми процедурами, но я в основном использую хранимую процедуру для операций CRUD, мой вопрос заключается в том, что если я хочу получить некоторые данные с помощью хранимой процедуры и поместить их в передний конец с помощью VB.Net, поскольку значение no count установлено на on, оно будет отображать только сообщение о том, что затронуты N строк. Как я могу получить нужные мне данные, сохранив установленный NOCOUNT включенным?

Возможно, многие из вас найдут этот вопрос очень простым, но это всего лишь небольшая путаница, которая у меня есть.

Спасибо

Что я уже пробовал:

Попробовал временную таблицу, но не очень полезно

RedDk

NOCOUNT-это всего лишь прокладка сообщения.

SSMSE генерирует много кода при щелчке правой кнопкой мыши, большая его часть содержит именно такой оператор NOCOUNT. - Вероятно, это место, где авторы "множества статей" были заражены идеей, что в этом есть что-то особенное.

Игнорировать его.

1 Ответов

Рейтинг:
11

Maciej Los

Взгляните на это Документация MSDN[^]:

Цитата:
Останавливает сообщение, показывающее количество строк, затронутых инструкцией Transact-SQL или хранимой процедурой, от возврата в качестве части результирующего набора.
...
Установка NOCOUNT ON предотвращает отправку сообщений DONE_IN_PROC клиенту для каждого оператора в хранимой процедуре. Для хранимых процедур, содержащих несколько операторов, которые не возвращают много фактических данных, или для процедур, содержащих циклы Transact-SQL, параметр установить параметр nocount on может значительно повысить производительность за счет существенного снижения объема сетевого трафика.


Вывод: Использование SET NOCOUNT ON настоятельно рекомендуется.

Существует масса мифов об этой инструкции. Я бы посоветовал почитать:
SQL SERVER - эффект SET NOCOUNT на @@ROWCOUNT - SQL Authority with Pinal Dave[^]
Производительность сюрпризы и предположения : установить параметр nocount на SQLPerformance.com[^]