2009-09-30 74 views
4

SQL新手在這裏,我有一段時間找到應該是一個簡單的代碼示例來回答我認爲是一個簡單的問題。如何從T-SQL存儲過程返回表

我需要寫一個存儲過程,不會爲了三兩件事:從一個表 2)更新另一個表中的行 1)選擇行,在#1 3使用結果表中的值)返回結果來自#1的表格。

我找不到任何有關如何從存儲過程返回像這樣的值的示例。另外,如何從調用者(這是另一個T-SQL腳本)檢索返回的表。

+0

[見這裏](http://stackoverflow.com/questions/440308/tsql-returning-a-table-from-a-function-or-store-procedure) - 這種近乎完全相同的副本題。我發現它是通過搜索「如何從T-SQL存儲過程返回表」 – 2009-09-30 13:18:52

回答

5

看看這個。

DECLARE @Table1 TABLE(
     ID INT, 
     VAL int 
) 

INSERT INTO @Table1 (ID,VAL) SELECT 1, 1 
INSERT INTO @Table1 (ID,VAL) SELECT 2, 2 
INSERT INTO @Table1 (ID,VAL) SELECT 3, 3 

DECLARE @Table2 TABLE(
     ID INT, 
     VAL VARCHAR(MAX) 
) 

INSERT INTO @Table2 (ID,VAL) SELECT 1, 1 
INSERT INTO @Table2 (ID,VAL) SELECT 2, 2 
INSERT INTO @Table2 (ID,VAL) SELECT 3, 3 

--Lets say this is the 2 tables 


--now this will go into the sp 
UPDATE @Table1 
SET  Val = t1.Val + t2.Val 
FROM @Table1 t1 INNER JOIN 
     @Table2 t2 ON t1.ID = t2.ID 

SELECT t1.* 
FROM @Table1 t1 INNER JOIN 
     @Table2 t2 ON t1.ID = t2.ID 


--and you can insert into a var table in the tsql script that calls the sp 

DECLARE @Table1TSQL TABLE(
     ID INT, 
     VAL int 
) 

INSERT INTO @Table1TSQL (ID,VAL) EXEC YourSP 
+0

好吧,那麼YourSP中的語法允許我返回一個值? – Whiteknight 2009-09-30 13:27:38

+3

與最後一次選擇匹配的行將被返回 – CSharpAtl 2009-09-30 13:42:55

+0

這正是我正在尋找的信息。謝謝CSharpAtl – Whiteknight 2009-09-30 13:43:59