我正在尝试将存储过程从SQL Server迁移到MySQL。我在转换try catch块时遇到了一些问题。我知道可以使用DECLARE HANDLER
代替MySQL中的TRY
/ CATCH
块。如何使用DECLARE HANDLER
在MySQL存储过程中复制此CATCH
语句的函数?
BEGIN CATCH
CLOSE transDetails //cursor name
CLOSE transQuoteOptionDetails//another cursor name
DEALLOCATE transDetails
DEALLOCATE transQuoteOptionDetails
DECLARE @ErrorMessage varchar(2000),@ErrorSeverity tinyint,@ErrorState tinyint
SET @ErrorMessage = ERROR_MESSAGE()
SET @ErrorSeverity = ERROR_SEVERITY()
SET @ErrorState = ERROR_STATE()
Delete From MasterReport_Temp where masterReportRecNo=@masterReportRecNo
Update MasterReport set status=3, errorDescription=@ErrorMessage where recNo=@masterReportRecNo
END CATCH
答案 0 :(得分:0)
似乎在mysql中没有try catch等价物
但是有一种方法可以使用SIGNAL来处理错误
SIGNAL是“返回”错误的方法。 SIGNAL提供错误 信息到处理程序,应用程序的外部,或 给客户。此外,它还提供对错误的控制 特征(错误号,SQLSTATE值,消息)。没有 SIGNAL,有必要采取故意的解决方法 引用一个不存在的表来使例程返回一个 错误。