ХП и SET NOCOUNT ON

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
StillZero
Ветеран
Сообщения: 454
Зарегистрирован: 06 Июль 2005, 2:17
Откуда: Хабаровск
Контактная информация:

ХП и SET NOCOUNT ON

Сообщение StillZero »

Для чего необходимо включать SET NOCOUNT ON в ХП?
Желательно пример.
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: ХП и SET NOCOUNT ON

Сообщение Andrew™ »

StillZero писал(а):Для чего необходимо включать SET NOCOUNT ON в ХП?
Желательно пример.
не забивай себе голову, в любой ХП в начале врубай и всё
Аватара пользователя
Admin
Администратор
Сообщения: 3960
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

А если в двух словах аргументировать применение?
P.S. В хелпе не совсем понятно ...
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

Admin писал(а):А если в двух словах аргументировать применение?
P.S. В хелпе не совсем понятно ...
в ХП ты можешь получать несколько результатов если юзается OFF

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

SQLMoreResults используется если в запросе возвращается несколько
результатов(Например в одном SQL запросе 2 или более самостоятельных
SELECT). Эта функция закрывает очередной результат и переходит к следующему
набору данных.
Есть нюанс с так называемыми "ROWS affected".
Так при использовании ODBC2 в набор результата это сообщение не попадает, а
вот в ODBC3 попадает.
Например, ты вызываешь ХП, а в ней забыл поставить SET NOCOUNT ON.
В этой ХП ты выполняешь SELECT, UPDATE, INSERT(например во временную
таблицу), а потом даешь основной SELECT, результат которого и будешь читать
в программе. Так вот в ODBC3 ты получишь несколько наборов результата. А
тебе то нужен только последний. Для этого и нужно использовать
SQLMoreResults.
Аватара пользователя
Admin
Администратор
Сообщения: 3960
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Сообщение Admin »

Спасибо. Обстоятельный ответ!
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

кстати для инфо, если есть ХП, а вней производятся какие то действия по сбору информации во временную таблицу которая тут же и создаётся, а в конце стоит

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

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