mybatis 調用存儲過程,如何拋出sql異常

在用mybatis調用數據庫的存儲過程時,我發現有時即便mybatis失敗了,乃至存儲過程異常了。mybatis也不會拋出異常,下面是處理這種狀況的方法sql

1. 有以下存儲過程( sqlServer 2012)數據庫

USE [WES]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Pros_CreateMessage]
  @id varchar(50) = '', 
  @senderId  varchar(50) = 'A0000001', 
  @type int              
AS                                    
BEGIN
  SET NOCOUNT ON;
  BEGIN TRAN
  BEGIN TRY
       --存儲過程具體實現代碼.....
      set @result = 1  --若是成功就返回的結果

   COMMIT TRAN
   END TRY
   BEGIN CATCH
   
   ROLLBACK TRAN 
   print(ERROR_MESSAGE())
   set @result = ERROR_MESSAGE()  --失敗就將異常拋出,到時mybatis就會收到
   end catch

   select @result as succeed --正常結束時就返回@result 
  
END

只要將ERROR_MESSAGE()作爲返回值,到時mybatis自動就會拋出異常了mybatis

2. mybatis存儲過程的調用 code

<select id="xxx" resultType="int" parameterType="map" statementType="CALLABLE" flushCache="true">
   {call Pros_CreateMessage(#{id,mode=In,jdbcType=VARCHAR},#{senderId,mode=In,jdbcType=VARCHAR})}
</select>
相關文章
相關標籤/搜索