2014-02-19 75 views
0

我在SQL Server 2008R2中有一個存儲過程,它將兩個用戶定義的表類型作爲參數。每種類型的是一個簡單的表格拿着系列IDS的:如何將兩個MS SQL Server表合併到一個存儲過程中

CREATE TYPE [dbo].[Ids] AS TABLE(
    [Id] [int] NULL 
) 

我想傳遞的兩個參數相結合,實現了以下結果:

DECLARE 
@Table1 TABLE (Id INT) 

DECLARE 
@Table2 TABLE (Id INT) 


INSERT INTO @Table1 VALUES (1) 
INSERT INTO @Table1 VALUES (2) 

INSERT INTO @Table2 VALUES (11) 
INSERT INTO @Table2 VALUES (22) 


SELECT * FROM @Table1 
SELECT * FROM @Table2 


DECLARE 
@Combined TABLE (T1 INT, T2 INT) 

-- TODO: Magically combine the two tables 

SELECT * FROM @Combined 

-- Output would be the following 

1, 11 
1, 22 
2, 11 
2, 22 
+0

這個問題與表值參數無關。 – usr

+0

也許 - 但它的背景可能會導致某人提出了一個不同的方法來解決問題 –

回答

2

你似乎想cross join

insert into @Combined(t1, t2) 
    select t1.id, t2.id 
    from @Table1 t1 cross join 
     @Table2 t2; 
+0

+1,但我還會添加第二個選項,只做SELECT和不插入,因爲根據預期用途,SELECT with CROSS JOIN可以是所有需要的,額外的表格變量/臨時表格只會浪費精力和資源。 –

相關問題