SQL Server(t-sql)存储过程具有多个更新

时间:2017-06-02 14:25:38

标签: sql sql-server tsql stored-procedures

我一直在编写存储过程。但是现在我不确定我是否正确地做到了。我有这段代码:

BEGIN
    UPDATE tblPro 
    SET Email = @p_Email 
    WHERE ProID = @p_proId

    UPDATE tblVisits 
    SET VisitBrief = 'CONFIRMED' 
    WHERE VisitID = @p_visitId

    UPDATE Bookings 
    SET JobConfirmation = 1 
    WHERE BookingID = @p_bookingId

    IF @@ROWCOUNT > 0
    BEGIN
        INSERT INTO tblView (ViewLogType)
        VALUES ('Visit')
    END
    ELSE
        PRINT 'WARNING: Insert Failed' 
END

为了确保所有语句都被执行,在每个更新语句之后使用@@ROWCOUNT > 0会更好吗?

感谢您的建议

1 个答案:

答案 0 :(得分:1)

如果您想捕获错误,可以使用TRY / CATCH。

如果要保存行计数以供以后跟进,则应记录它们以保存您感兴趣的语句。即使语句正确执行(0行受到影响),Rowcount仍然可以为零。

如果您希望能够在其中一个语句失败时回滚,也可以使用事务。