2010-10-29 2 views
2

У меня есть хранимая процедура, которую я не хочу изменять. Он довольно большой и сложный, и я не хочу больше путать его.MS SQL: используйте набор результатов хранимых процедур в другом запросе?

Так что я хотел бы сделать, это другой порядок магазина, который вызывает на большом, и используют результирующий набор для выполнения дальнейших выбирает/присоединяется и т.д.

+0

Проблема в том, что я получаю вложенную ошибку ... – Nick

ответ

1

Вы можете создать определенный пользователь функцию, вызывают хранимую процедуру, которую вы используете, и использовать ее в других запросах.

+0

Проблема в том, что я получаю вложенную ошибку ... – Nick

+0

@Nick - Какую ошибку вы получаете? – Giorgi

2

Вы можете вставить набор результатов процедуры в таблицу. Как это:

create procedure test 
as 
begin 

select 1 

end 

go 

declare @t table 
(
id int 
) 

insert into @t 
exec test 

select * from @t -- returns one row 
+0

Я решил, что мне придется это сделать, но подумал, что может быть и другое. Спасибо за ответ времени. – Nick

+0

Я не думаю, что есть другой способ захвата результата из процедуры. –

+0

Проблема в том, что я получаю вложенную ошибку ... – Nick

2

Вы можете использовать определенную пользователем функцию вместо:

create function table_func 
() 
returns table 
as 
    return 
    (
      select top 10 * 
      from master..msreplication_options 
     ) 

Затем, чтобы получить набор результатов

select * from table_func() 

Если вам все еще нужно, чтобы назвать это как хранит proc в других местах, создает хранимую процедуру, которая обертывает пользовательскую функцию:

create procedure test_proc 
as 
    select * from test_func(); 
Смежные вопросы