|
|
|
Использование рекордсета одной процы в другой
|
|||
|---|---|---|---|
|
#18+
Прошу прощения за возможный оффтопик и изобретение велосипеда, но вот у нас на работе СУПЕРУМНЫЙ сис- и дб-админ не мог справиться с этой проблемкой, а я - скромный программист, справился. Спешу поделиться, может кому поможет, буду рад. Итак, одна хранимая процедура возвращает результат выборки и надо этот результат использовать в другой хранимой процедуре. CREATE proc p1 @c cursor varying output as declare tc cursor for select * from DAO_ActionTypes set @c = tc DEALLOCATE tc open @c (конец первой процедуры, возвращающей значение) дальше : declare @c1 cursor, @i1 int, @i2 int, @s1 varchar(255) exec p1 @c = @c1 output fetch next from @c1 into @i1, @i2, @s1 While @@FETCH_STATUS = 0 begin print 'ХЕ-ХЕ, Виталий : ' + @s1 fetch next from @c1 into @i1, @i2, @s1 end Т.е. смысл в том, чтобы из первой процы возвращать курсов в качестве параметра. Спасибо за внимание... P.S.: Виталий, это тот сисадмин, который НЕ СМОГ 8-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2002, 10:13:30 |
|
||
|
Использование рекордсета одной процы в другой
|
|||
|---|---|---|---|
|
#18+
Сомнительный подход ... очень ... Т.к. скорее всего этот способ куда медленне, чем делать это через временные таблицы ... Если конечно не требуется именно перебор значений ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2002, 10:16:52 |
|
||
|
Использование рекордсета одной процы в другой
|
|||
|---|---|---|---|
|
#18+
Само-собой именно перебор и требовался, иначе нафиг вообще рекордсет нужен ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2002, 10:18:37 |
|
||
|
Использование рекордсета одной процы в другой
|
|||
|---|---|---|---|
|
#18+
А почему бы в p1 этого не сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2002, 10:23:00 |
|
||
|
Использование рекордсета одной процы в другой
|
|||
|---|---|---|---|
|
#18+
to Trong: Есть такое понятие - "структурное программирование", когда действия разбиваются на процедуры и функции. Если не сводить, конечно, работу с сервером до уровня "Select", а пытаться программировать хоть каую-то логику прямо на сервере, а не в АРМе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2002, 10:25:47 |
|
||
|
Использование рекордсета одной процы в другой
|
|||
|---|---|---|---|
|
#18+
Ну-ну ... Где-то я это уже слышал ... Только структурное программирование это не тогда, когда делаешь себе проблемы, а тогда они сводятся к минимуму ... Можно сделать обработку курсора в p1 и выдать результат через select ... и полученный рекордсет ловить там где надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2002, 10:28:23 |
|
||
|
Использование рекордсета одной процы в другой
|
|||
|---|---|---|---|
|
#18+
Лучше про принципы структурного программирования в TSQL не сильно вспоминать. Тут основной показатель - это скорость и ресурсы, и если пытаться все по подпроцедурам разбивать, то кроме падения скорости ничего не получишь. Единственное по моему применение структурного программирования оправданное - это view и inline udf рисовать, действительно помогают жить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2002, 10:35:33 |
|
||
|
Использование рекордсета одной процы в другой
|
|||
|---|---|---|---|
|
#18+
Вообще, проблемы, а равно и способы их решения, бывают разные. Способ с временной таблицей - первое, что приходит в голову. Я увидел задачу и нашел альтернативное решение. На радостях поделился. Мог бы кто-нибудь похлопать по плечу и сказать "молодец, ващее". Кстати, вопрос дилетанта: MS SQL Server сам удаляет временные таблицы или их надо подчищать ? Если самому надо помнить об их удалении, то их использование мне не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2002, 10:35:35 |
|
||
|
Использование рекордсета одной процы в другой
|
|||
|---|---|---|---|
|
#18+
2beriya А так не проще будет ? CREATE proc p1 as select * from DAO_ActionTypes go select * from openquery(mysqlserver, 'exec p1') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2002, 10:42:54 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1818476]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 351ms |

| 0 / 0 |
