Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Объединеие наборов, возвращаемых процедурами
|
|||
|---|---|---|---|
|
#18+
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) Как это сделать? На сколько может упасть производительность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2002, 15:55 |
|
||
|
Объединеие наборов, возвращаемых процедурами
|
|||
|---|---|---|---|
|
#18+
Либо insert ... exec обеих процедур во временные таблицы, либо через openquery. Очевидно, что оба варианта менее оптимальны по производительности. Насколько именно - смотрите сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2002, 20:09 |
|
||
|
Объединеие наборов, возвращаемых процедурами
|
|||
|---|---|---|---|
|
#18+
Интересует - без временных таблиц. И именно - объединение результирующих сетов из процедур. Примерчик с openquery не покажите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2002, 14:11 |
|
||
|
Объединеие наборов, возвращаемых процедурами
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2002, 08:00 |
|
||
|
Объединеие наборов, возвращаемых процедурами
|
|||
|---|---|---|---|
|
#18+
На самом деле использование временных таблиц - это вполне нормально и часто позволяет повысить скорость. Варианты, в которых напрочь отвергается их использование, представляют чисто теоритический интерес и по-моему не стоит заострять на них внимание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2002, 09:11 |
|
||
|
Объединеие наборов, возвращаемых процедурами
|
|||
|---|---|---|---|
|
#18+
На самом деле использование временных таблиц... ------- Это понятно. Вопрос был об другом - можно ли вернуть из _процедуры_ набор и можно ли несколько таких наборов объеденить. Решение с сохранением промежуточных результатов в таблице понятно, но не интересно. ...Openquery НЕ ПОДДЕРЖИВАЕТ переменные в качестве параметров... ----------------- Спасибо за инфо. Хммм... в качестве второго параметра Openquery идет строка. Можно попробовать сформировать ее с параметрами... Но это не решает проблемы - код будет сильно зависимым от конфигурации системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2002, 15:55 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1823591]: |
0ms |
get settings: |
13ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 351ms |

| 0 / 0 |
