2010-10-29 76 views
2

我有一個存儲過程,我不想修改。這是相當龐大和複雜的,我不想再添加任何混亂。MS SQL:在另一個查詢中使用存儲過程結果集?

所以我希望做的是對大的一個調用另一個存儲過程,並使用結果集進行進一步的選擇/連接等

+0

現在的問題是我得到一個嵌套的錯誤... – Nick 2010-10-29 17:57:05

回答

1

您可以創建一個用戶定義的函數調用存儲過程,並在其他查詢中使用它。

+0

現在的問題是,我得到一個嵌套的錯誤... – Nick 2010-10-29 17:49:13

+0

@Nick - 你得到什麼錯誤? – Giorgi 2010-10-29 19:00:11

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 2010-10-29 16:57:48

+0

我不認爲有任何其他方法來捕獲過程中的結果集。 – 2010-10-29 16:59:02

+0

現在的問題是我得到一個嵌套的錯誤... – Nick 2010-10-29 17:48:36

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(); 
相關問題