Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Service Broker. Как правильно очистить очередь?  [new]
Трость
Guest
Добрый день.

Написана хранимая процедура, которая возвращает параметр NVARCHAR, в теле процедуры есть очистка очереди, делаю через RECEIVE * FROM [EM_Test].

Всё бы ничего, но процедура возвращает DataSet, который приводит к сбою на клиентской части. Теперь не могу понять как очистить очередь таким образом, чтобы хранимая процедура не возвращала DataSet. Побывал так, но это неправильный синтаксис:

DECLARE @C INT
SET @C = (RECEIVE COUNT(*) FROM [EM_Test])


Может есть у кого мысли как правильно сделать?
16 дек 14, 11:40    [17003315]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как правильно очистить очередь?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Трость
Может есть у кого мысли как правильно сделать?

Изучить синтаксис RECEIVE внимательно

[ WAITFOR ( ]
RECEIVE [ TOP ( n ) ]
<column_specifier> [ ,...n ]
FROM <queue>
[ INTO table_variable ]
[ WHERE { conversation_handle = conversation_handle
| conversation_group_id = conversation_group_id } ]
[ ) ] [ , TIMEOUT timeout ]
[ ; ]
16 дек 14, 11:45    [17003357]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как правильно очистить очередь?  [new]
Трость
Guest
Glory,

Привет,
справку почитал, понять не могу, где можно зацепиться за хвост моей задачи?
16 дек 14, 13:03    [17003920]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как правильно очистить очередь?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Трость
справку почитал, понять не могу, где можно зацепиться за хвост моей задачи?

Посмотреть на выделенную шрифтом опцию
Прочитать про нее в справке
Использовать ее
16 дек 14, 13:07    [17003950]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как правильно очистить очередь?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Трость,

Вообще-то процедура, которая что-то возвращает, кроме кода завершения - плохая процедура. Возвращать должна функция.
Но от SQL получить можно только датасет или INT. Вариантов нет.
Если хотите подавить результат запроса (зачем?), то смотрите на выделенное жирным.
16 дек 14, 13:08    [17003959]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как правильно очистить очередь?  [new]
Трость
Guest
Много возражений было, но такое громкое слышу впервые:

Владислав Колосов
Трость,

Вообще-то процедура, которая что-то возвращает, кроме кода завершения - плохая процедура.


Нда?! Не мыслимый гений!
16 дек 14, 13:14    [17003995]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как правильно очистить очередь?  [new]
Трость
Guest
Glory
Трость
справку почитал, понять не могу, где можно зацепиться за хвост моей задачи?

Посмотреть на выделенную шрифтом опцию
Прочитать про нее в справке
Использовать ее


Спасибо! буду побывать!
16 дек 14, 13:16    [17004002]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как правильно очистить очередь?  [new]
Трость
Guest
Glory,

Спасибо, всё получилось!
16 дек 14, 14:04    [17004300]     Ответить | Цитировать Сообщить модератору
 Re: Service Broker. Как правильно очистить очередь?  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4478
Трость
Много возражений было, но такое громкое слышу впервые:

Владислав Колосов
Трость,

Вообще-то процедура, которая что-то возвращает, кроме кода завершения - плохая процедура.


Нда?! Не мыслимый гений!

Ирония неуместна. Пример - код на клиенте, который выполняет процедуру через рекордсет.
А там 100500 записей. Быстро она у вас выполнится и загрузит данные, которые никому не нужны?
16 дек 14, 14:06    [17004311]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить