Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вызов процедуры в процедуре. / 8 сообщений из 8, страница 1 из 1
22.10.2002, 11:00:33
    #32060591
АМС
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры в процедуре.
Как получить набор данных из хранимой процедуры?
Есть процедура proc1, которая возвращает набор данных из одной строки. Хотелось бы получить значение одного столбца примерно таким способом(который не работает) для использования в другой хранимой процедуре:

Код: plaintext
select @col=Поле1 from (exec proc1 Параметр)

Может кто знает, как это сделать?
...
Рейтинг: 0 / 0
22.10.2002, 11:09:03
    #32060605
Alexes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры в процедуре.
Здесь лучше использовать output параметры для всех возвращаемых полей.
Код: plaintext
1.
2.
3.
4.
create proc1
   @Parametr datatype0,
   @Field1 datatype1 output,
   @Field2 datatype2 output...
...
Рейтинг: 0 / 0
22.10.2002, 11:14:28
    #32060610
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры в процедуре.
Alexes прав, но, если очень нужно, можно так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE #t (
...  --полностью совпадает с возвр. строкой
 
)

INSERT #t EXECUTE proc1

SELECT @col = Поле1 FROM #t
...
Рейтинг: 0 / 0
22.10.2002, 11:15:02
    #32060611
АМС
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры в процедуре.
Alexes'у
Это-то понятно. Но proc1 уже задействована в других операциях с ADO и не хочется её менять или писать подобную, но с выходными параметрами. Самое смешное в том, что на клиенте через ADO я спокойно могу получить этот dataset, а внутри SQL-server'a трудности. Мне смутно кажется, что выход должен быть, но он какой-то кривой.
...
Рейтинг: 0 / 0
22.10.2002, 11:19:27
    #32060613
fima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры в процедуре.
Можно использовать конструкцию insert into table_name exec procedure_name занося либо во временную таблицу либо в переменную типа таблица, можно воспользоваться openrowset. Но лучше сделать как предложил Alexes, а для того что бы не трогать существующую процедуру, можно сделать её копию под другим именем и немного исправить.
...
Рейтинг: 0 / 0
22.10.2002, 11:22:29
    #32060614
Alexes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры в процедуре.
А можно и потрогать, оставив select и добавив выходные параметры со значениями по умолчанию
Код: plaintext
1.
2.
3.
4.
create proc1
   @Parametr datatype0,
   @Field1 datatype1 = null output,
   @Field2 datatype2 = null output...
...
Рейтинг: 0 / 0
22.10.2002, 11:47:20
    #32060626
АМС
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры в процедуре.
Fime
Спасибо!! Вариант с временной таблицей подходит. Я сам когда-то так делал, но потом забыл.
...
Рейтинг: 0 / 0
22.10.2002, 12:34:42
    #32060660
akuz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов процедуры в процедуре.
Спасибо Fime
Ну вот, а я писал, старался, а вы даже не посмотрели на мой ответ. ;(
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вызов процедуры в процедуре. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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