如何顺序运行sql脚本

时间:2015-01-21 14:41:13

标签: c# sql sql-server sql-server-2008 stored-procedures

我有三个操作要在一个存储过程中执行。问题是我需要确保在先前的操作完成后执行操作。

例如:操作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

1 个答案:

答案 0 :(得分:0)

有两种方法可以做到。

  • 在每个语句之后使用@@ error变量并检查它是否为非零值(我认为这不是最好的方法),这意味着发生了错误,所以你只需从指向回滚你的tranaction返回。
  • 使用Try catch ......排序:

    BEGIN TRY
    { sql_statement |
      statement_block }
    END TRY
    BEGIN CATCH
    { sql_statement |
      statement_block }
    END CATCH
    

    如果您发现任何错误,只需通过回滚交易从该点返回。