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

Откуда:
Сообщений: 10
Моя сохраненная процедура возвращает какой-то датасет. Сейчас описываю таблицу
Create table #Temp1( описание полей таблицы )
потом делаю:
Insert into #Temp1
Execute MyProc
и работаю с возвращенными результатами.
У меня достаточно большое количество полей, поэтому каждый раз описывать структуру возвращаемого результата не удобно, особенно когда дальше используются всего пару полей.
Можно ли как-то работать с возвращаемым сохраненкой результатом не описывая перед этим структуру таблицы?
4 июл 05, 17:25    [1673359]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Нет.
Толко если хп в udf перепишете.
4 июл 05, 17:29    [1673381]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
Paul Sacks
Member

Откуда:
Сообщений: 1105
Может это натолкнет на мысль:
https://www.sql.ru/faq/faq_topic.aspx?fid=416
4 июл 05, 17:43    [1673487]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
И вот это может натолкнет: https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=173207
4 июл 05, 18:21    [1673738]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
yura k bilyk
Member

Откуда:
Сообщений: 10
пробовал делать
set fmtonly on
exec MyProc
выдает ошибку
Invalid object name '#Temp1'.
#Temp1 - это временная таблица которая используется в моей сохраненке
С set fmtonly off - все прекрасно работает.
5 июл 05, 10:25    [1674737]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
И вы предыдущую ссылку до конца почитали?
5 июл 05, 10:27    [1674744]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
yura k bilyk
Member

Откуда:
Сообщений: 10
Дочитал. К сожалению ответа для своего случая я там не нашел...
5 июл 05, 10:48    [1674849]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Не зная текста вашей процедуры нам надо самим догадаться, в чем дело?
5 июл 05, 11:03    [1674947]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541

автор
Можно ли как-то работать с возвращаемым сохраненкой результатом не описывая перед этим структуру таблицы?

Можно. Создай постоянную таблицу и работай через нее.

Posted via ActualForum NNTP Server 1.2

5 июл 05, 11:07    [1674968]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
yura k bilyk
Member

Откуда:
Сообщений: 10
Смысл в следующем.
Есть процессы. Процессы состоят из операций.
Есть сохраненки которые строят отчеты по процессам (на основании выполненных операций). Формат возвращаемых в отчет данных для каждого процесса разный.
Теперь делаю сохраненку которая будет делать консолидированый отчет о всех процессах. Она будет выводить туда эффективность выполнение норм. Этот параметр есть в каждом процессе.
Посколько процессов не один и не два. То меня несколько зае... описывать временную таблицу перед каждым вызовом сохраненки.
Вот ищю пути оптимизации...
5 июл 05, 12:05    [1675309]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
yura k bilyk
Есть сохраненки которые строят отчеты по процессам (на основании выполненных операций). Формат возвращаемых в отчет данных для каждого процесса разный.
Теперь делаю сохраненку которая будет делать консолидированый отчет о всех процессах. Она будет выводить туда эффективность выполнение норм. Этот параметр есть в каждом процессе.

Каким образом эта главная процедура будет обращаться к результатам запросов, формат которых заранее не известен и меняется для каждой низлежащей процедуры?

Иными словами, как можно работать с тем, не знаю с чем?
5 июл 05, 12:12    [1675341]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541

GreenSunrise
Иными словами, как можно работать с тем, не знаю с чем?

Можно. Если максимально унифицировать результирующую выборку. Или создать одну широченную таблицу, добавив туда все возможные поля
результата.

Posted via ActualForum NNTP Server 1.2

5 июл 05, 12:16    [1675368]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
yura k bilyk
Member

Откуда:
Сообщений: 10
GreenSunrise
Каким образом эта главная процедура будет обращаться к результатам запросов, формат которых заранее не известен и меняется для каждой низлежащей процедуры?

Я согласен для каждого процесса прописать пару строчек кода для вывода его результата в консолидирующий отчет. Но для каждого процесса описывать времянку в более чем 20 полей! Это имхо изврат...
5 июл 05, 12:40    [1675515]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Roman S. Golubin
Можно. Если максимально унифицировать результирующую выборку. Или создать одну широченную таблицу, добавив туда все возможные поля результата.

Вот! Именно. Какого ответа я и добиваюсь от автора вопроса. Только вы же понимаете, что таким образом вы как раз уходите от
yura k bilyk
Формат возвращаемых в отчет данных для каждого процесса разный.

???
Если будет унификация, то не будет неопределенности формата. Что и требовалось доказать.

yura k bilyk
Я согласен для каждого процесса прописать пару строчек кода для вывода его результата в консолидирующий отчет.

Вот и чудесно. Пусть таблица для подготовки данных консолидирующего отчета имеет ОДНУ, четко определенную структуру. А процедура для каждого процесса пишет в нее то, что ей надо, поскольку процедура как раз "знает", что за данные она обрабатывает, какой в них смысл и что с ними делать. Таким образом ничего не надо по 20 раз создавать.
5 июл 05, 13:03    [1675672]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
yura k bilyk
Member

Откуда:
Сообщений: 10
GreenSunrise
Вот и чудесно. Пусть таблица для подготовки данных консолидирующего отчета имеет ОДНУ, четко определенную структуру. А процедура для каждого процесса пишет в нее то, что ей надо, поскольку процедура как раз "знает", что за данные она обрабатывает, какой в них смысл и что с ними делать. Таким образом ничего не надо по 20 раз создавать.

Ты имеешь в виду из каждой сохраненки строющей отчет по отдельному процессу
писать в унифицированую таблицу отчетные данные?
Не все тут так чудненько. Консолидирующий отчет по процессам может строится за разные периоды. Т.е. в этой унифицированой таблице в любой промежуток времени будут хранится неизвестно какие данных. Плюс это будет криво с точки зрения мультиюзерности. Два юзера могут запустить одновременно консолидирующий отчет. Да еще и за разные периоды... Да можно сделать лок этой таблицы. Но... Опять таки мультиюзерность...
Можно для каждого строющегося конс. отчета создавать таблицу с рандомным именем. Но тут опять проблемы. Нужно будет реализовывать механизм что бы каждая сохраненка писала во все эти сводные таблицы...
Вобщем что-то мне это все не нравится...
5 июл 05, 13:32    [1675874]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541

А я не вижу проблем с мультисессионностью:

1-й вариант - каждому вызову процедуры отчета определяется уникальный идентификатор и пишется в таблицу вместе с данными. Потом по
нему же обратно результаты забираются. Вариант хорош еще и тем, что в связке с сервером MSMQ, например, отчет можно заказать
заранее, а потом (через пару дней) посмотреть... асинхронность - ёё!! :-))))

2-й вариант - создавай временную таблицу непосредственно перед вызовом процедуры отчета и в процедуре пиши в нее. Тут уж точно ни
каких проблем не будет - каждому пользователю - отдельная таблица.


Posted via ActualForum NNTP Server 1.2

5 июл 05, 13:42    [1675944]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
Ну вот, только ответ напишешь, соберешься отослать, а тут за тебя уже ответили :-) В общем, присоединяюсь к Roman S. Golubin.
5 июл 05, 14:09    [1676208]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
yura k bilyk
Member

Откуда:
Сообщений: 10
Roman S. Golubin
2-й вариант - создавай временную таблицу непосредственно перед вызовом процедуры отчета и в процедуре пиши в нее. Тут уж точно ни
каких проблем не будет - каждому пользователю - отдельная таблица.

Вот это пожалуй подойдет... А как проверить, в процедуре уже есть такая таблица или нету. Если есть - писать, если нет - ну и фиг с ней...
5 июл 05, 18:32    [1677965]     Ответить | Цитировать Сообщить модератору
 Re: работа с возвращаемым из сохраненной процедуры датасетом  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
if object_id('tempdb..#t') is null
	print 'not exists'
else
	print 'exists'
5 июл 05, 18:39    [1677984]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить