2012-12-28 65 views
2

我有兩個存儲過程sp1sp2SQL服務器:插入兩個存儲過程的結果到一個表

sp1返回結果

value1 
------ 
    1  
    2 
    3 
    4 
    5 

sp2返回結果

value2 
------ 
    4  
    5 
    6 
    7 
    8 

我有一個表稱爲test,它有兩列value1value2,如何插入sp1導致value1列和sp2導致value2test表中?

我用這

insert into test 
    exec [sp1], exec [sp2] 

這導致一個錯誤,但它正在爲單個值,請點擊下面的鏈接

+2

您將如何從兩個表中的行關聯?用'value1'和'value2'命令可以嗎?如果一個SP返回比另一個更多的行,你會做什麼?你甚至爲什麼要這樣做?對於兩個SP來說,如果他們返回單獨的行集合,則以任何方式進行關聯都沒有任何意義。請幫助我們瞭解您想要的內容和目的。 – ErikE

回答

0

如果這些是你可以做以下的,僞功能:

first_val = select sp1(); 
second_val = select sp2(); 


insert into test values (first_val,second_val); 

This may work as well:

insert into test values (select sp1(),select sp2()); 

您無法使用過程,因爲無法從過程返回值。

8

我能想到的唯一的辦法是:

declare @t1 as table (id int identity(1,1), val int); 
declare @t2 as table (id int identity(1,1), val int); 

insert into @t1 (val) 
    exec sp1; 

insert into @t2 (val) 
    exec sp2; 

insert into test 
    select t1.val, t2.val 
    from @t1 t1 full outer join 
     @t2 t2 
     on t1.id = t2.id 
+1

這裏是[SQLfiddle](http://sqlfiddle.com/#!3/9d992/2)它如果你想要它 –

相關問題