2013-04-25 63 views
3

我想創建一個存儲過程,這將允許我更新TripStopOrder表中StopTypeCode = DropStripStop表中的ActualArrivalDate和ActualDepartureDate。創建一個存儲過程

Create Proc spUpdateTable 
@OrderID int, @ArrivalDate datetime, @DepartureDate datetime 

As 

Begin 

    Begin Transaction 
    Select * From dbo.TripStopOrder 
    Join dbo.TripStop ON dbo.TripStopOrder.TripStopID = dbo.TripStop.TripStopID 
    Where OrderID = ''and StopTypeCode ='Drop' 

一旦我找到這條記錄,我需要抓住TripStopId並將它傳遞給Update語句。 不知道如何......我可以使用臨時表,然後運行另一個Select語句來獲取TripStopID?

Update dbo.TripStop SET ArrivalDate='',DepartureDate='' 
    Where TripStopID = '' 

End 
Commit 

任何意見或建議將不勝感激。 〜新手〜

+0

店TripStopId一個臨時變量,然後在更新例如使用選擇@v_tripstopid = tripstopid從dbo.TripStopOrder 加入dbo.TripStop ON dbo.TripStopOrder.TripStopID = dbo.TripStop.TripStopID Where OrderID =''和StopTypeCode ='Drop'然後在更新中使用更新dbo.TripStop SET ArrivalDate = '',DepartureDate ='' 其中TripStopID = #v_tripstopid – Satya 2013-04-25 15:30:27

+1

[使用SQL Server中的JOIN更新表格]可能的重複(http://stackoverflow.com/questions/1604091/update-a-table-using-join -in-sql-server) – 2013-04-25 16:02:16

回答

2

而不是做的選擇,然後在UPDATE的,只是改變你的WHERE在UPDATE語句子句:

WHERE TripStopID = (SELECT T.TripStopID FROM TripStopOrder O 
INNER JOIN TripStop T ON O.TripStopID = T.TripStopID 
WHERE OrderID = @OrderID AND StopTypeCode = 'Drop') 
+0

謝謝。這正是我需要它做的。 – MinnesotaMom 2013-04-25 17:18:13

+0

不客氣!如果有幫助,請將其標記爲答案。 – Melanie 2013-04-25 18:17:44

4

可以如@TripStopId值賦值給一個變量:

DECLARE @TripStopId INT 

Select @TripStopid = TripStopId 
From dbo.TripStopOrder 
Join dbo.TripStop ON dbo.TripStopOrder.TripStopID = dbo.TripStop.TripStopID 
Where OrderID = ''and StopTypeCode ='Drop' 

然後你就可以在你的UPDATE語句中使用它。

Update dbo.TripStop SET ArrivalDate='',DepartureDate='' 
Where TripStopID = @TripStopId 
+0

謝謝。這比我想要做的要簡單得多。 – MinnesotaMom 2013-04-25 15:34:52

+0

@ user2315851 - 沒問題。很高興我可以幫助:) - 如果這有助於請將其標記爲答案。 – 2013-04-25 15:35:12