关于存储过程返回值及内嵌事务的问题,急,盼解答
本帖最后由 pangdecai 于 2013-03-14 20:50:49 编辑
如题,遇到一个类似于以下存储过程的问题
ALTER PROC [AA]
@A INT
BEGIN
BEGIN TRANSACTION;
IF @A > 0
BEGIN
COMMIT TRANSACTION;
RETURN 0;
END
ELSE
BEGIN
ROLLBACK TRANSACTION;
RETURN 1;
END
END
执行存储过程的时候,如果参数为正,那么提交事务,返回值为0,这个没问题,但是如果参数不为正,那么肯定是要回滚事务的,如果回滚事务就无法取得返回值了,如果在ROLLBACK TRANSACTION;之前返回那么就会积压事务,如果先ROLLBACK TRANSACTION,那就无法取得返回值,请问这个问题怎么解决?
存储过程
事务
返回值
------解决方案--------------------事务是基于对数据库的操作的记录,你的返回值还有变量一类的存亡对数据库数据及结构没有影响,事务日志是不会记录他们的操作的,所以你提交跟回滚对返回值没有影响
------解决方案--------------------在存储过程中,ROLLBACK TRANSACTION 语句不影响调用该过程的批处理中的后续语句;将执行批处理中的后续语句。