mysql 存储过程 try catch_sqlserver 存储过程 try catch TRANSACTION (转)
时间: 2023-10-12 12:17:12 浏览: 157
MySQL 存储过程可以使用 BEGIN 和 END 语句来定义事务,并且可以使用 DECLARE HANDLER 语句来处理异常。下面是一个简单的 MySQL 存储过程,其中使用了 BEGIN 和 END 语句定义了事务,并使用了 DECLARE HANDLER 语句处理了异常:
```mysql
DELIMITER $$
CREATE PROCEDURE my_proc()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END;
START TRANSACTION;
-- 在此处编写存储过程的主体逻辑
COMMIT;
END$$
DELIMITER ;
```
在上面的存储过程中,当发生异常时,使用 DECLARE HANDLER 语句中的 ROLLBACK 语句来回滚事务。
而对于 SQL Server 存储过程,可以使用 TRY...CATCH 语句块来处理异常,并且可以使用 BEGIN TRANSACTION 和 COMMIT TRANSACTION 语句来定义事务。下面是一个简单的 SQL Server 存储过程,其中使用了 TRY...CATCH 语句块处理异常,并使用了 BEGIN TRANSACTION 和 COMMIT TRANSACTION 语句定义了事务:
```sql
CREATE PROCEDURE my_proc
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION;
-- 在此处编写存储过程的主体逻辑
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH;
END
```
在上面的存储过程中,当发生异常时,使用 TRY...CATCH 语句块中的 ROLLBACK TRANSACTION 语句来回滚事务。如果事务已经被回滚,可以使用 @@TRANCOUNT 系统函数来检查事务计数器是否大于 0。
阅读全文