SQL写一个存储过程,请高手指导!!

来源:百度知道 编辑:UC知道 时间:2024/05/15 09:19:24
SQL写一个存储过程,里面执行多条语句(每对不同的表),怎么使当一条执行不成功时,其它的没有执行的语句不执行,执行了的语句回滚
请高手多多指点呀

create procedure pro_test
@a int,
@b varchar(20)
as
begin tran
insert into table1(a,b) values(@a,@b)
if @@error=0--执行成功
begin
insert/delete/update...
if @@error=0
commit
else
rollback

end
else
rollback

以下为用例:
----创建不带参数的存储过程---
use accp
go
select * from stuInfo
select * from stuMarks
go
if exists(select * from sysobjects where name='proc_stu')
drop procedure proc_stu
go
---创建存储过程---
create procedure proc_stu
as
declare @writtenAge float ,@labAge float
select @writtenAge=AVG(writtenExam),@labAge=AVG(labExam)
from stuMarks
print '笔试平均分:'+convert(varchar(5),@writtenAge)
print '机试平均分:'+convert(varchar(5),@labAge)
if(@writtenAge>70 and @labAge>70)
print '优秀'
else
print '较差'
print