【发布时间】:2016-03-28 07:47:21
【问题描述】:
我正在尝试将存储过程从 SQL Server 迁移到 MySQL。我在转换 try catch 块时遇到了一些问题。我知道 DECLARE HANDLER 可以用来代替 MySQL 中的 TRY/CATCH 块。如何在 MySQL 存储过程中使用DECLARE HANDLER 复制此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
【问题讨论】:
-
正如您必须阅读的那样,您声明了一个处理程序来处理特定的错误情况。没有看到
TRY块,任何人都知道错误情况可能是什么? -
谢谢@miken32,我想知道当在某个阶段发生错误时,有没有办法在mysql存储过程中执行一些语句,如UPDATE、DELETE和CREATE语句将执行。如果可能,请给我代码
标签: mysql sql-server stored-procedures