/*create table tt(jg numeric(18,2),v varchar(20) not null)
*/
alter proc test1
as
begin
set nocount on
create table #temp1(jg numeric(18,2))
--insert into #temp1
--select 'ab'insert into #temp1( jg)
select 1.11insert into #temp1(jg)
select 2begin tran
insert into tt select 1,'ok'
insert into tt(jg) select jg from #temp1
if @@error<>0
begin
rollback tran
select 'Result'=899,'Description'='插入失败!'
return -1endcommit tranend
在存储过程中,执行到任意一步,如果发生错误,存储过程是否是自动终止并返回?在我这个小测试过程中,在事务中引发错误,事务是回滚了,但并没返回我希望的说明
,select 'Result'=899,'Description'='插入失败!',就是这句,这是为什么?怎么样才能返回我自己的错误解释?谢谢
解决方案 »
- 想学习数据库,不知道从哪里开始!
- 关于锁的疑惑
- 有没有安阳的程序员,有开发项目合作,13703726061 轻软公司
- 菜鸟问题!
- sql查询时能否查询多个栏目的数据?
- sqlserver导出txt文件的问题:Cannot use the output option when passing a constant to a stored procedure
- 数据库中表的的标识问题
- 修复数据库文件!急
- 提示如下错误!!
- '我把一个程序打了包(用Access建的库,名字是a.mdb),并安装在“d:\a",但是运行时,提示找不到a.mdb.必须手工加入吗?手工加入的话,有可能被别人修改!怎么办?
- 求一SQL,在线等.....马上结啊.
- 再开一贴,,求SQL....在线等..十万火急.
...... 你的代码line1:
....... 出错控制语句end
还有,严重错误的等级是如何划分的?
不会,必须要做出错判断,用 @@ERROR 或者 raiserror 来捕捉才行
下面这句是我的总结的问题,万望给个明确的答复,谢谢啦在存储过程中,无论发生什么级别的错误,都不会继续往下执行了?在事物中加个错误判断,然后执行回滚,这个是必要的,否则不需要事务的地方,我也可以不加错误捕捉了?我的理解对否?