Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использование рекордсета одной процы в другой / 10 сообщений из 10, страница 1 из 1
27.11.2002, 10:13:30
    #32072835
beriya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование рекордсета одной процы в другой
Прошу прощения за возможный оффтопик и изобретение велосипеда, но вот у нас на работе СУПЕРУМНЫЙ сис- и дб-админ не мог справиться с этой проблемкой, а я - скромный программист, справился. Спешу поделиться, может кому поможет, буду рад.
Итак, одна хранимая процедура возвращает результат выборки и надо этот результат использовать в другой хранимой процедуре.

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-))
...
Рейтинг: 0 / 0
27.11.2002, 10:16:52
    #32072839
Trong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование рекордсета одной процы в другой
Сомнительный подход ... очень ...
Т.к. скорее всего этот способ куда медленне, чем делать это через временные таблицы ... Если конечно не требуется именно перебор значений ...
...
Рейтинг: 0 / 0
27.11.2002, 10:18:37
    #32072840
beriya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование рекордсета одной процы в другой
Само-собой именно перебор и требовался, иначе нафиг вообще рекордсет нужен ?
...
Рейтинг: 0 / 0
27.11.2002, 10:23:00
    #32072842
Trong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование рекордсета одной процы в другой
А почему бы в p1 этого не сделать?
...
Рейтинг: 0 / 0
27.11.2002, 10:25:47
    #32072844
beriya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование рекордсета одной процы в другой
to Trong: Есть такое понятие - "структурное программирование", когда действия разбиваются на процедуры и функции. Если не сводить, конечно, работу с сервером до уровня "Select", а пытаться программировать хоть каую-то логику прямо на сервере, а не в АРМе.
...
Рейтинг: 0 / 0
27.11.2002, 10:28:23
    #32072846
Trong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование рекордсета одной процы в другой
Ну-ну ... Где-то я это уже слышал ...
Только структурное программирование это не тогда, когда делаешь себе проблемы, а тогда они сводятся к минимуму ...

Можно сделать обработку курсора в p1 и выдать результат через select ... и полученный рекордсет ловить там где надо.
...
Рейтинг: 0 / 0
27.11.2002, 10:35:33
    #32072851
ASCRUS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование рекордсета одной процы в другой
Лучше про принципы структурного программирования в TSQL не сильно вспоминать. Тут основной показатель - это скорость и ресурсы, и если пытаться все по подпроцедурам разбивать, то кроме падения скорости ничего не получишь. Единственное по моему применение структурного программирования оправданное - это view и inline udf рисовать, действительно помогают жить.
...
Рейтинг: 0 / 0
27.11.2002, 10:35:35
    #32072852
beriya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование рекордсета одной процы в другой
Вообще, проблемы, а равно и способы их решения, бывают разные. Способ с временной таблицей - первое, что приходит в голову.
Я увидел задачу и нашел альтернативное решение. На радостях поделился. Мог бы кто-нибудь похлопать по плечу и сказать "молодец, ващее".

Кстати, вопрос дилетанта:
MS SQL Server сам удаляет временные таблицы или их надо подчищать ? Если самому надо помнить об их удалении, то их использование мне не нравится.
...
Рейтинг: 0 / 0
27.11.2002, 10:42:54
    #32072857
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование рекордсета одной процы в другой
2beriya
А так не проще будет ?

CREATE proc p1
as
select * from DAO_ActionTypes
go

select * from openquery(mysqlserver, 'exec p1')
...
Рейтинг: 0 / 0
27.11.2002, 10:54:46
    #32072870
beriya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование рекордсета одной процы в другой
2Glory
Возможно проще, если смогу разобраться, что подставить в качестве линкованного сервера.
Самом прилинковать сервер я не могу - говорит нет прав администратора 8-((
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Использование рекордсета одной процы в другой / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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