Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / обработка рекордсета в ХП / 16 сообщений из 16, страница 1 из 1
31.07.2002, 11:12:50
    #32039846
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
собственно вопрос в следующем.
есть хранимая процедура (ХП1), которая в результате работы формирует некий рекордсет. хотелось бы в другой процедуре (ХП2) вызвать ХП1 несколько раз и каждый раз обработать полученный рекордсет.
...
Рейтинг: 0 / 0
31.07.2002, 11:42:36
    #32039873
Jimmy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
В T-SQL нет понятия рекордсет .
Курсоры есть, таблицы и табличные переменные (MS SQL2000)

ИМХО для цикличной обработки в ХП результатов другой лучше всего подойдет таблица (временная, для передачи результатов).
При этом создается временная таблица в ХП1, вызывается ХП2, которая помещает свои результаты в эту временную таблицу и передает управление ХП1. Дальше - понятно.

ЗЫ Возможно, что с помощью табличной переменной тоже можно это сделать, но я не юзал - врать не буду.
...
Рейтинг: 0 / 0
31.07.2002, 11:51:30
    #32039881
Maxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
2Jimmy
Если у него 7 то таких переменных просто не существует
...
Рейтинг: 0 / 0
31.07.2002, 12:12:24
    #32039896
Jimmy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
2 Maxx
Дык я же и написал: "..табличные переменные (MS SQL2000)" :0)
...
Рейтинг: 0 / 0
31.07.2002, 12:31:20
    #32039906
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
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.
CREATE PROCEDURE ХП2
AS
BEGIN
    CREATE TABLE #t1 (ID int default  0 , res1 float, res2 float)

    WHILE
    BEGIN

        SET @param = ...

        INSERT INTO #t1
        EXEC ХП1 @param

        UPDATE #t1
        SET ID = @param
        WHERE ID =  0 

    END
END


но такой вариант мне не нравится дополнительным UPDATE'ом. Поэтому и задал тут такой вопрос.

PS. Все применительно к SQL2K
...
Рейтинг: 0 / 0
31.07.2002, 12:42:15
    #32039915
Jimmy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
2 AAron

И не надо менять логику. Ведь есть же версии!.
Просто создай еще одну версию для обработки ХП и наслаждайся.

RE Версии ХП:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE MyProc; 1   /* Версия для приложения */ 
AS
    :::

CREATE PROCEDURE MyProc; 2   /* Версия для обработки в ХП */ 
AS
    :::
...
Рейтинг: 0 / 0
31.07.2002, 13:05:32
    #32039927
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
ХА!
это конечно известно.... просто тогда придется поддерживать _две_ версии процедур, делающих одно и то же, но по разному возращающих результаты....
а это дополнительные проблемы на поддержку :))
...
Рейтинг: 0 / 0
31.07.2002, 13:08:55
    #32039931
Jimmy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
2 AAron

Так проблемы в каждом варианте есть. Просто нужно выбрать самый оптимальный. Ну а это - дело субъективное.
А я просто предложил :0)
...
Рейтинг: 0 / 0
31.07.2002, 13:09:22
    #32039932
Rom
Rom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
дополнительные проблемы на поддержку !?!?!?!?!!?!?!?!?!?! ...........
...
Рейтинг: 0 / 0
31.07.2002, 14:05:08
    #32039971
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
напиши промежуточную функцию возвращяющию таблицу и юзай потом...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE FUNC ff1 (
@param as int)
RETURNS @tbl TABLE ( res1 float, res2 float)
AS
BEGIN
        INSERT INTO @tbl
        EXEC ХП1 @param

END
...
Рейтинг: 0 / 0
31.07.2002, 14:40:54
    #32039992
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
2MiCe
к сожалению не покатит, одна из причин - внутри хп1 используется EXEC (@SQLQuery) :(
...
Рейтинг: 0 / 0
31.07.2002, 14:48:27
    #32039995
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
и в чем проблема?
...
Рейтинг: 0 / 0
31.07.2002, 14:59:31
    #32040005
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
внутри функций запрещено исполнять EXEC (@SQL) и EXEC sp_executesql

ладно, буду другую логику реализовывать...
...
Рейтинг: 0 / 0
31.07.2002, 15:04:11
    #32040006
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
а так можно внутри ....
Код: plaintext
openrowset('sqloledb','myserv','sa','pwd','exec storeproc'
...
Рейтинг: 0 / 0
31.07.2002, 15:18:37
    #32040018
AAron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
а насколько порочно может быть использование коннекта сервера к самому себе? я просто с OPENROWSET не работал, а когда размышлял на тему этих ХП, как-то решил не использовать. Меня здесь смущает еще и передача имени пользователя/пароля.
...
Рейтинг: 0 / 0
31.07.2002, 15:28:54
    #32040027
MiCe
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
обработка рекордсета в ХП
в принципе ты прав... пароль спрятать with encription..
а вот коррекность... да вопрос сложный... запускается распределенная транзакция... но расширенные процедуры точно так же обращаются к серверу... да и работает медленнее... но иногда полезно...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / обработка рекордсета в ХП / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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