如何让ExecuteNonQuery在通过将失败的查询记录到日志表中的catch语句时返回-1?

时间:2016-12-25 08:19:46

标签: .net sql-server

我创建了一个存储过程,当查询成功执行或失败时,该存储过程会插入到日志表中。它看起来像这样:

CREATE PROCEDURE [dbo].[sp_stackoverflow]
AS
BEGIN
    BEGIN TRY
    BEGIN TRANSACTION trans1
        INSERT INTO tablename...

        INSERT INTO logtablename...

        COMMIT TRANSACTION trans1
    END TRY
    BEGIN CATCH
        IF @@TRANCOUNT > 0
        BEGIN
            ROLLBACK TRANSACTION trans1
        END
        SET NOCOUNT ON
        INSERT INTO logtablename...
    END CATCH 
END

C#代码看起来像这样

// isSuccessful is boolean
isSuccessful = cmd.ExecuteNonQuery() > 0;

我希望在调用ExecuteNonQuery()时返回-1,这样isSuccessful将返回false,但它总是返回true,可能是因为在catch语句中插入日志表的查询

1 个答案:

答案 0 :(得分:0)

我可以解释一下,基本上你想设置' IsSuccessful' Bool字段基于executeNonQuery方法返回的值;在这种情况下,您也可以尝试使用"输出"参数并在Try块中设置其不同的值,在Catch块中设置其他值;根据Output参数返回的值,您可以轻松判断操作是否成功,并相应地为IsSuccessful字段设置值。希望这会对你有所帮助。