try catch && tran

来源:互联网 发布:注册六西格玛黑带 知乎 编辑:程序博客网 时间:2024/06/07 20:36

一。语法要点:
BEGIN TRY
{ sql_statement ¦ statement_block }
END TRY
BEGIN CATCH
[ { sql_statement ¦ statement_block } ]
END CATCH
[ ; ]

异常部分:
在 CATCH 块的作用域内,可以使用以下系统函数来获取导致 CATCH 块执行的错误消息:
ERROR_NUMBER() 返回错误号。
ERROR_SEVERITY() 返回严重性。
ERROR_STATE() 返回错误状态号。
ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。
ERROR_LINE() 返回导致错误的例程中的行号。
ERROR_MESSAGE() 返回错误消息的完整文本。 该文本可包括任何可替换参数所提供的值,如长度、对象名或时间。

CREATE PROC P_TEST    @TEM INT ,    @ERR_MES NVARCHAR(MAX) OUTPUTAS    BEGIN        BEGIN TRY            BEGIN TRAN;            SELECT CAST('SS' AS DECIMAL(18, 2));            COMMIT TRAN;        END TRY        BEGIN CATCH            SET @ERR_MES = ERROR_MESSAGE();            ROLLBACK TRAN;        END CATCH;    END;-------测试--------------    DECLARE @ERR_MES NVARCHAR(MAX);    EXEC P_TEST '123', @ERR_MES OUTPUT;    SELECT @ERR_MES;

这里写图片描述

————-C# 调用———————

        SqlParameter[] sp = new SqlParameter[3];         sp[0] = new SqlParameter("@TEM", SqlDbType.Int);        sp[0].Value = "123";        sp[1] = new SqlParameter("@ERR_MS", SqlDbType.NVarChar, 10000);        sp[1].Direction = System.Data.ParameterDirection.Output;        DataAccess.ExecuteSql("P_TEST", sp);        err = sp[2].Value.ToString();//错误信息
原创粉丝点击