我有三个操作要在一个存储过程中执行。问题是我需要确保在先前的操作完成后执行操作。
例如:操作2必须在操作1完成后开始执行。
请告诉我如何实现以达到上述目标。
代码:
行动 - 1
UPDATE Products
SET MarkDownPrice = price + adjustment,
MarkDownDate = startdate, MarkedDown = 1
FROM Products p
JOIN PriceChanges pc ON p.SKU = pc.SKU and dateprocessed is null
WHERE pc.SKU = @SKU
行动 - 2
UPDATE StyleColour
SET isDirty = 1
FROM StyleColour sc
JOIN Products p ON sc.styleID = p.merretStyleID AND sc.Colour = p.MerretColour
WHERE SKU = @SKU
行动 - 3
UPDATE pricechanges
SET dateProcessed = getdate()
WHERE SKU = @SKU and dateprocessed is null
答案 0 :(得分:0)
有两种方法可以做到。
使用Try catch ......排序:
BEGIN TRY
{ sql_statement |
statement_block }
END TRY
BEGIN CATCH
{ sql_statement |
statement_block }
END CATCH
如果您发现任何错误,只需通过回滚交易从该点返回。