Страница 1 из 1

ХП и SET NOCOUNT ON

Добавлено: 05 Октябрь 2006, 7:00
StillZero
Для чего необходимо включать SET NOCOUNT ON в ХП?
Желательно пример.

Re: ХП и SET NOCOUNT ON

Добавлено: 05 Октябрь 2006, 8:53
Andrew™
StillZero писал(а):Для чего необходимо включать SET NOCOUNT ON в ХП?
Желательно пример.
не забивай себе голову, в любой ХП в начале врубай и всё

Добавлено: 05 Октябрь 2006, 9:33
Admin
А если в двух словах аргументировать применение?
P.S. В хелпе не совсем понятно ...

Добавлено: 05 Октябрь 2006, 12:18
Andrew™
Admin писал(а):А если в двух словах аргументировать применение?
P.S. В хелпе не совсем понятно ...
в ХП ты можешь получать несколько результатов если юзается OFF

НО есть ограничение на количество таких резулттатов и ежели превысить его то без всякой ошибки произойдёт откат выполнения ХП что плохо

SQLMoreResults используется если в запросе возвращается несколько
результатов(Например в одном SQL запросе 2 или более самостоятельных
SELECT). Эта функция закрывает очередной результат и переходит к следующему
набору данных.
Есть нюанс с так называемыми "ROWS affected".
Так при использовании ODBC2 в набор результата это сообщение не попадает, а
вот в ODBC3 попадает.
Например, ты вызываешь ХП, а в ней забыл поставить SET NOCOUNT ON.
В этой ХП ты выполняешь SELECT, UPDATE, INSERT(например во временную
таблицу), а потом даешь основной SELECT, результат которого и будешь читать
в программе. Так вот в ODBC3 ты получишь несколько наборов результата. А
тебе то нужен только последний. Для этого и нужно использовать
SQLMoreResults.

Добавлено: 05 Октябрь 2006, 12:31
Admin
Спасибо. Обстоятельный ответ!

Добавлено: 06 Октябрь 2006, 8:32
Andrew™
кстати для инфо, если есть ХП, а вней производятся какие то действия по сбору информации во временную таблицу которая тут же и создаётся, а в конце стоит

Код: Выделить всё

select .... from #myTempTable
drop table #myTempTable
библиотека нормально отрюхает и на клиента попадёт именно выборка по SELECtу