【问题标题】:Creating a Stored Procedure创建存储过程
【发布时间】:2013-04-25 15:27:09
【问题描述】:

我正在尝试创建一个存储过程,它允许我更新 TripStop 表中的 ActualArrivalDate 和 ActualDepartureDate,其中 StopTypeCode = Drop 在 TripStopOrder 表中。

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

任何想法或建议将不胜感激。 ~新手~

【问题讨论】:

  • 将 TripStopId 存储在临时变量中,然后在更新中使用它,例如select @v_tripstopid = tripstopid From dbo.TripStopOrder Join dbo.TripStop ON dbo.TripStopOrder.TripStopID = dbo.TripStop.TripStopID Where OrderID = ''and StopTypeCode ='Drop' 然后在更新中使用 Update dbo.TripStop SET ArrivalDate='' ,DepartureDate='' 其中 TripStopID = #v_tripstopid

标签: sql sql-server tsql sql-server-2008 stored-procedures


【解决方案1】:

您可以将值分配给变量,例如@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

【讨论】:

  • 谢谢。这比我尝试做的要简单得多。
  • @user2315851 - 没问题。很高兴我能帮上忙 :) - 如果这有帮助,请将其标记为答案。
【解决方案2】:

不要先执行 SELECT 再执行 UPDATE,只需更改 UPDATE 语句中的 WHERE 子句:

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

【讨论】:

  • 谢谢。这正是我需要它做的。
猜你喜欢
  • 1970-01-01
  • 2011-09-11
  • 2016-11-11
  • 2021-12-08
  • 2017-10-14
  • 2021-07-10
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多