
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
02.02.2018, 13:59:00
|
|||
|---|---|---|---|
|
|||
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
MS SQL сам создает таблицу, если мы запускаем запрос вида select col1, col2 as col3 into #tbl_tmp from dbo.tbl_realdata Можно ли сделать то же самое, но с процедурой? Что то вроде : Insert Into #Temp1 Exec dbo.sp_GetAllData @Name = 'Jason'. Нашел пока 2 способа реализовать подобное: https://stackoverflow.com/questions/42984503/how-to-insert-result-of-stored-procedure-into-temp-table-without-declaring-temp OPENROWSET не подходит из-за необходимости указывать данные подключения к серверу, а второй способ с sys.dm_exec_describe_first_result_set_for_object похоже работает только на простейших примерах, если есть несколько вариантов возвращаемых данных, используется with или темповые таблицы, он выдает ошибку. Есть ли какие еще варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 14:00:03
|
|||
|---|---|---|---|
|
|||
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
А что вы собрались делать с таблицой неизвестной структуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 14:12:29
|
|||
|---|---|---|---|
|
|||
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
Гавриленко Сергей Алексеевич, Сравнивать результаты до и после изменений, необходимо для тестирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 15:07:00
|
|||
|---|---|---|---|
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
DigimotOPENROWSET не подходит из-за необходимости указывать данные подключения к серверу Ещё OPENROWSET не подходит из-за невозможности выполнить любую процедуру, так можно выполнить только некоторые. Можно в принципе попробовать написать CLR функцию... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 15:12:44
|
|||
|---|---|---|---|
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
Digimot, ну в подобном извращении вышли через глобальную временную таблицу(мерзость :)). Или в процедуре сворачивать результаты в xml и возвращать его, потом разварачивать в таблицы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 15:16:28
|
|||
|---|---|---|---|
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
TaPaKDigimot, ну в подобном извращении вышли через глобальную временную таблицу(мерзость :)). Или в процедуре сворачивать результаты в xml и возвращать его, потом разварачивать в таблицыЭто для нахождения различия рекордсетов двух произвольных процедур? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 15:48:16
|
|||
|---|---|---|---|
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
alexeyvgTaPaKDigimot, ну в подобном извращении вышли через глобальную временную таблицу(мерзость :)). Или в процедуре сворачивать результаты в xml и возвращать его, потом разварачивать в таблицыЭто для нахождения различия рекордсетов двух произвольных процедур? :-) та нет конечно, класический костыль :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 16:09:00
|
|||
|---|---|---|---|
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
Digimot, 14086351 Результат будет содержать данные и метаданные. Так что получить в результате временную таблицу - дело техники. Хотя имея xml-и, можно и без временных таблиц обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 16:09:37
|
|||
|---|---|---|---|
|
|||
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
Digimot, Канонически процедуры должны возвращать код результата выполнения, никаких рекордсетов. Результат возвращают запросы. Но авторы серверов обычно применяют гибкий подход к потребителю с целью максимального сбора денежных средств :) Если Вы сможете обойтись без получения табличных данных из процедуры, то избежите проблемы, создаваемой сильной связанностью кода. Просто архитектурный совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 16:25:58
|
|||
|---|---|---|---|
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
Владислав КолосовDigimot, Канонически процедуры должны возвращать код результата выполнения, никаких рекордсетов. Результат возвращают запросы. Но авторы серверов обычно применяют гибкий подход к потребителю с целью максимального сбора денежных средств :) Если Вы сможете обойтись без получения табличных данных из процедуры, то избежите проблемы, создаваемой сильной связанностью кода. Просто архитектурный совет.Интересно посмотреть, где такие каноны прописаны :-) У меня другие :-) И что подразумевается под "сильной связанностью кода" в случае применения хранимых процедур для получения рекордсетов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 17:15:01
|
|||
|---|---|---|---|
|
|||
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
alexeyvgDigimotOPENROWSET не подходит из-за необходимости указывать данные подключения к серверу Ещё OPENROWSET не подходит из-за невозможности выполнить любую процедуру, так можно выполнить только некоторые. Об этом не знал, можно подробней про ограничения ? TaPaKDigimot, ну в подобном извращении вышли через глобальную временную таблицу(мерзость :)). Или в процедуре сворачивать результаты в xml и возвращать его, потом разварачивать в таблицы Идея в том чтобы не трогать и никак не менять процедуру специально для тестирования, иначе в нем пропадает смысл, глобальная таблица не решает проблему когда изменяется набор возвращаемых столбцов в процедуре. invmDigimot, 14086351 Результат будет содержать данные и метаданные. Так что получить в результате временную таблицу - дело техники. Хотя имея xml-и, можно и без временных таблиц обойтись. Почитаю, спасибо, похоже единственный вариант это xml? Владислав КолосовDigimot, Канонически процедуры должны возвращать код результата выполнения, никаких рекордсетов. Боюсь у нас такой подход не возможен, большая часть процедур возвращает таблицу или набор таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
02.02.2018, 18:14:40
|
|||
|---|---|---|---|
Запись результатов работы процедуры во временную таблицу, |
|||
|
#18+
DigimotalexeyvgЕщё OPENROWSET не подходит из-за невозможности выполнить любую процедуру, так можно выполнить только некоторые.Об этом не знал, можно подробней про ограничения ?Например: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1690362]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
217ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 531ms |

| 0 / 0 |
