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

Откуда:
Сообщений: 14
Всем привет!

Есть процедура p_Test, возвращающая курсор, пускай с полями xxx, sm

Я хочу использовать результат этой процедуры в дальнейшем sql

Т.е. хочу например написать конструкцию, понятное дело не рабочую, типа

select xxx, sum(sm)
from (exec p_Test)
group by xxx

Как мне это сделать?
20 авг 12, 12:26    [13036091]     Ответить | Цитировать Сообщить модератору
 Re: Процедура, курсор и sql  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
https://www.sql.ru/faq/faq_topic.aspx?fid=416
20 авг 12, 12:34    [13036144]     Ответить | Цитировать Сообщить модератору
 Re: Процедура, курсор и sql  [new]
iap
Member

Откуда: Москва
Сообщений: 47050
HySerg,

1. в 99% случаев курсор не нужен.

Предположим, Вы это знаете, и Вас настиг случай из 1%

2. Тогда поможет процедура, получающая OUTPUT параметр типа CURSOR.
В этом параметре должен вернуться открытый курсор.
С ним в дальнейшем можно работать так же, как и просто с курсором - FETCH

3. Очень часто для этого в подобном стиле используют системную процедуру sp_executesql

Однако, повторяю: скорее всего правильнее написать SQL запрос и отказаться от курсора
20 авг 12, 12:36    [13036157]     Ответить | Цитировать Сообщить модератору
 Re: Процедура, курсор и sql  [new]
хочу например
Guest
HySerg,

если процедура возвращает курсор, то о каком результате из которого можно сделать селект может идти речь?

если возвращен курсор, то работать с ним нужно как с курсором. open, fetch
20 авг 12, 12:54    [13036312]     Ответить | Цитировать Сообщить модератору
 Re: Процедура, курсор и sql  [new]
HySerg
Member

Откуда:
Сообщений: 14
Да, вариант с темповой табличкой самый нормальный.
А еще вопрос, процедурка возвращает 200 полей, а мне нужно только сто из них, можно как-то запихать в темповую табличку из 100 полей результат процедурки в 200?
20 авг 12, 13:21    [13036540]     Ответить | Цитировать Сообщить модератору
 Re: Процедура, курсор и sql  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37147
HySerg
Да, вариант с темповой табличкой самый нормальный.
А еще вопрос, процедурка возвращает 200 полей, а мне нужно только сто из них, можно как-то запихать в темповую табличку из 100 полей результат процедурки в 200?
Нельзя. И вообще, это криво.
20 авг 12, 13:23    [13036561]     Ответить | Цитировать Сообщить модератору
 Re: Процедура, курсор и sql  [new]
ПаWWWлОдАрЕц
Member

Откуда: NSK-PVL
Сообщений: 135
ИМХО, Переделать процедуру в функцию + на основе выборки из функции объявить CTE в запросе и джойнить, групить, верить уже получившуюся CTE.
20 авг 12, 14:03    [13036949]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить