--一般这么写CREATE PROCEDURE sp_Test @re bit out --0表示成功,1表示失败 AS set @re=1 set xact_abort on --出错时,让事务自动回滚 begin tran insert into table1(PK,INT2) values('xx',1) --本句正常执行 delete from table2 --本句有误,表table2不存在 commit tran set @re=0 GO
如果只有" delete from table2 --本句有误,表table2不存在"这一句, 即: -------------------------------------------------------------- CREATE PROCEDURE sp_Test @re bit out --0表示成功,1表示失败 AS set @re=1 set xact_abort on --出错时,让事务自动回滚 begin tran delete from table2 --本句有误,表table2不存在 commit tran set @re=0 GO -------------------------------------------------------------- --调用 exec sp_Test 1 --错误 服务器: 消息 208,级别 16,状态 1,过程 sp_Test,行 7 对象名 'table2' 无效。 服务器: 消息 266,级别 16,状态 1,过程 sp_Test,行 9 EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = 0,当前计数 = 1。
@re bit out --0表示成功,1表示失败
AS
set @re=1
set xact_abort on --出错时,让事务自动回滚
begin tran
insert into table1(PK,INT2) values('xx',1) --本句正常执行
delete from table2 --本句有误,表table2不存在
commit tran
set @re=0
GO
即:
--------------------------------------------------------------
CREATE PROCEDURE sp_Test
@re bit out --0表示成功,1表示失败
AS
set @re=1
set xact_abort on --出错时,让事务自动回滚
begin tran
delete from table2 --本句有误,表table2不存在
commit tran
set @re=0
GO
--------------------------------------------------------------
--调用
exec sp_Test 1
--错误
服务器: 消息 208,级别 16,状态 1,过程 sp_Test,行 7
对象名 'table2' 无效。
服务器: 消息 266,级别 16,状态 1,过程 sp_Test,行 9
EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = 0,当前计数 = 1。
@r varchar(1000) output,然后将上述存储过程里的print "..."里,换成错误信息提示给用户,这时,如果出现了错误,根据就执行不到赋返回值的那一条语句啊?