0

我感到困惑和沮丧,我的两个同行也是如此......我有一个存储过程,它启动一个事务,做很多事情(包括一些动态 SQL 语句),但是一旦它到达它下面的语句轰出一个例外。但是,如果我对它成功执行的语句进行硬编码。

它也不会进入它自己的 try 块,它会立即轰炸到调用存储过程中的 try 块,并出现以下错误:

EXECUTE 之后的事务计数表明 BEGIN 和 COMMIT 语句的数量不匹配。先前计数 = 0,当前计数 = 1。

如果我遗漏了什么,请告诉我...

SET @SQL = N'UPDATE PF205.dbo.SOP30200 SET ECTRX = 4 WHERE SOPNUMBE = @SOPNUMBE AND SOPTYPE = 4'
        SET @PARAMDEF = N'@SOPNUMBE CHAR(21)';      

        BEGIN TRY
            EXECUTE sp_executesql @SQL,
            @PARAMDEF,
            @SOPNUMBE = @SOPNUMBE
        END TRY
        BEGIN CATCH
            SELECT ERROR_NUMBER(),
                ERROR_MESSAGE() 
        END CATCH
4

0 回答 0