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

start [/forum/topic.php?fid=46&msg=32040018&tid=1821440]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 353ms |

| 0 / 0 |
