powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединеие наборов, возвращаемых процедурами
6 сообщений из 6, страница 1 из 1
Объединеие наборов, возвращаемых процедурами
    #32024781
Hello, All !

NT 4.0 Sp6, MS SQL 7.0 Sp2.

Есть процедура, возвращающая объединение двух запросов:

SELECT
tblStandards.OwnerId,
tblStandards.StandardCode AS Code,
tblStandards.Keyword1Id,
tblStandards.Keyword2Id,
tblStandards.Description,
tblStandards.Author,
tblStandards.[Date]
FROM tblStandards INNER JOIN
tblTrees ON tblStandards.IDs = tblTrees.RefId INNER JOIN
tblReferenceTypes ON tblTrees.RefType = tblReferenceTypes.IDs
WHERE (tblTrees.RootId = @p_IDs)
AND (dbo.tblReferenceTypes.ReferenceName = @RefName_Standard)
UNION
SELECT
tblStations.OwnerId,
tblStations.StationCode AS Code,
tblStations.Keyword1Id,
tblStations.Keyword2Id,
tblStations.Description,
tblStations.Author,
tblStations.[Date]
FROM tblStations INNER JOIN
tblTrees ON tblStations.IDs = tblTrees.RefId INNER JOIN
tblReferenceTypes ON tblTrees.RefType = tblReferenceTypes.IDs
WHERE (tblTrees.RootId = @p_IDs)
AND (dbo.tblReferenceTypes.ReferenceName = @RefName_Station);

В этой же процедуре, но при других параметрах эти же Select'ы испльзуются
в других местах.

Вопрос собственно в том, что есть желание оформить эти запросы в виде
отдельных процедур (с соответствующими параметрами) и объеденить результаты
выборки. Что-то вида:

SELECT * FROM
(Standards_Select param, pam, escho_pam)
UNION
(Stations_Select param, pam, escho_pam)

Как это сделать? На сколько может упасть производительность?
...
Рейтинг: 0 / 0
Объединеие наборов, возвращаемых процедурами
    #32024786
Фотография Дед Маздай
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо insert ... exec обеих процедур во временные таблицы, либо через openquery. Очевидно, что оба варианта менее оптимальны по производительности. Насколько именно - смотрите сами.
...
Рейтинг: 0 / 0
Объединеие наборов, возвращаемых процедурами
    #32024862
Интересует - без временных таблиц.
И именно - объединение результирующих сетов из процедур.

Примерчик с openquery не покажите?
...
Рейтинг: 0 / 0
Объединеие наборов, возвращаемых процедурами
    #32024905
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO
1. Openquery может быть вам не поможет, т.к. судя по приведенному фргменту кода, вы используете входные переменные, а Openquery НЕ ПОДДЕРЖИВАЕТ переменные в качестве параметров. Можно конечно организовать передачу параметров через временную таблицу, но ...

2. Как ни странно но UNION c Openquery не работает (может только у меня конечно)
Т.е. c SELECT * FROM OPENQUERY(mysqlserver, 'exec sp_who') все в порядке, а вот

SELECT * FROM OPENQUERY(mysqlserver, 'exec sp_who')
UNION ALL
SELECT * FROM OPENQUERY(mysqlserver, 'exec sp_who')

не работает

Правда можно обойти эту ошибку, если добавить сервер самого себе как linked, т.е.
SELECT * FROM OPENQUERY(mysqlserver, 'exec sp_who')
UNION ALL
SELECT * FROM OPENQUERY(myself1, 'exec sp_who')
работает на ура

Но тогда по логике получается, что для каждой процедуры, участвующей в общем запросе нужен свой linked сервер.

ЗЫ
У меня правда SQL2000 EE
...
Рейтинг: 0 / 0
Объединеие наборов, возвращаемых процедурами
    #32024924
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле использование временных таблиц - это вполне нормально и часто позволяет повысить скорость.
Варианты, в которых напрочь отвергается их использование, представляют чисто теоритический интерес и по-моему не стоит заострять на них внимание
...
Рейтинг: 0 / 0
Объединеие наборов, возвращаемых процедурами
    #32025003
На самом деле использование временных таблиц...
-------
Это понятно. Вопрос был об другом - можно ли вернуть из _процедуры_ набор и можно ли несколько таких наборов объеденить. Решение с сохранением промежуточных результатов в таблице понятно, но не интересно.

...Openquery НЕ ПОДДЕРЖИВАЕТ переменные в качестве параметров...
-----------------
Спасибо за инфо. Хммм... в качестве второго параметра Openquery идет строка. Можно попробовать сформировать
ее с параметрами... Но это не решает проблемы - код будет сильно зависимым от конфигурации системы.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединеие наборов, возвращаемых процедурами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]