
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
31.07.2002, 11:12:50
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
собственно вопрос в следующем. есть хранимая процедура (ХП1), которая в результате работы формирует некий рекордсет. хотелось бы в другой процедуре (ХП2) вызвать ХП1 несколько раз и каждый раз обработать полученный рекордсет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 11:42:36
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
В T-SQL нет понятия рекордсет . Курсоры есть, таблицы и табличные переменные (MS SQL2000) ИМХО для цикличной обработки в ХП результатов другой лучше всего подойдет таблица (временная, для передачи результатов). При этом создается временная таблица в ХП1, вызывается ХП2, которая помещает свои результаты в эту временную таблицу и передает управление ХП1. Дальше - понятно. ЗЫ Возможно, что с помощью табличной переменной тоже можно это сделать, но я не юзал - врать не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 11:51:30
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
2Jimmy Если у него 7 то таких переменных просто не существует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 12:12:24
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
2 Maxx Дык я же и написал: "..табличные переменные (MS SQL2000)" :0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 12:31:20
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
2Jimmy: такой вариант неплох, однако процедура ХП1 уже существует и результатами ее работы пользуется некое приложение. менять логику работы процедуры я бы не хотел. ХП2 должна вызвать ХП1 несколько раз с разными параметрами, а потом усреднить полученные результаты. прицепить курсор к результату работы ХП1 у меня как-то не получилось(да и сомневаюсь, что это возможно). единственный вариант, который у меня получилось реализовать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. но такой вариант мне не нравится дополнительным UPDATE'ом. Поэтому и задал тут такой вопрос. PS. Все применительно к SQL2K ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 12:42:15
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
2 AAron И не надо менять логику. Ведь есть же версии!. Просто создай еще одну версию для обработки ХП и наслаждайся. RE Версии ХП: Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 13:05:32
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
ХА! это конечно известно.... просто тогда придется поддерживать _две_ версии процедур, делающих одно и то же, но по разному возращающих результаты.... а это дополнительные проблемы на поддержку :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 13:08:55
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
2 AAron Так проблемы в каждом варианте есть. Просто нужно выбрать самый оптимальный. Ну а это - дело субъективное. А я просто предложил :0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 13:09:22
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
дополнительные проблемы на поддержку !?!?!?!?!!?!?!?!?!?! ........... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 14:05:08
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
напиши промежуточную функцию возвращяющию таблицу и юзай потом... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 14:40:54
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
2MiCe к сожалению не покатит, одна из причин - внутри хп1 используется EXEC (@SQLQuery) :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 14:48:27
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
и в чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 14:59:31
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
внутри функций запрещено исполнять EXEC (@SQL) и EXEC sp_executesql ладно, буду другую логику реализовывать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 15:04:11
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
а так можно внутри .... Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 15:18:37
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
а насколько порочно может быть использование коннекта сервера к самому себе? я просто с OPENROWSET не работал, а когда размышлял на тему этих ХП, как-то решил не использовать. Меня здесь смущает еще и передача имени пользователя/пароля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2002, 15:28:54
|
|||
|---|---|---|---|
обработка рекордсета в ХП |
|||
|
#18+
в принципе ты прав... пароль спрятать with encription.. а вот коррекность... да вопрос сложный... запускается распределенная транзакция... но расширенные процедуры точно так же обращаются к серверу... да и работает медленнее... но иногда полезно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&tablet=1&tid=1821440]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 390ms |

| 0 / 0 |
