65.9K
CodeProject 正在变化。 阅读更多。
Home

存储过程中的良好 SQL 错误处理

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.25/5 (3投票s)

2009年5月8日

CPOL
viewsIcon

25710

存储过程中的良好 SQL 错误处理。

在编写 SQL 存储过程时,谨慎处理错误非常重要。牢记这一点很可能会节省您的精力、时间和金钱。 我已经使用 MS-SQL 2000 和 MS-SQL 2005 (尚未有机会使用 MS-SQL 2008) 很多年了,我想与您分享我在 T-SQL 存储过程中处理错误的方法。这段代码已经运行了很多年,从未出现问题。

注意: 作为另一个“最佳实践”,我建议使用仅一个级别TRY ... CATCH仅一个级别TRANSACTION 封装,因为否则可能无法保证 100% 的可靠性。

    BEGIN TRANSACTION;
    BEGIN TRY
    
    -- Code in transaction go here
    
    COMMIT TRANSACTION;
		
    END TRY BEGIN CATCH
        
        -- Rollback on error
        ROLLBACK TRANSACTION;

        -- Raise the error with the appropriate message and error severity
        DECLARE @ErrMsg nvarchar(4000), @ErrSeverity int;
        SELECT @ErrMsg = ERROR_MESSAGE(), @ErrSeverity = ERROR_SEVERITY();
        RAISERROR(@ErrMsg, @ErrSeverity, 1);

    END CATCH;

总而言之,我只想提到我已经在 .NET 2.0 和 .NET 3.5 中使用这段代码,并且它运行得非常好。 .NET TDS 解析器会抛出一个 SQLException,这非常适合处理。

原文网址:http://sp.nitriques.com/sites/blog/Lists/Posts/Post.aspx?ID=15

类别: CodeProject

发布日期: 2009年5月7日 晚上11:22

© . All rights reserved.