以下事务(一个简短的例子)将失败,但怎样让他显示“执行失败”呢(在查询分析器中)?

YiYanXiYin 2004-07-27 10:02:20
--以下事务将失败,但怎样让他显示“执行失败”呢?
begin tran
create table t1(a int);
create table t2(b int);
insert into t1 select 1000;
select * from t1
insert into t2 select 'abc'
select * from t2
if @@error =0 begin
select '执行成功'
commit tran
end else begin
select '执行失败'
rollback tran
end
...全文
227 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcccc1 2004-08-04
  • 打赏
  • 举报
回复
我觉的楼主问的这个问题意义不大啊,正常的插入删除不会出错吧,这个应定在具体的问题上,把你在对目标表操作时的几种情况先考虑进去,在操作前进行检查,看有这几种情况否,如果有的话则回滚如果正常的话,提交.
如果指行到中间某部分,忽然断电等情况,我想服务器下次重启时会将这次没执行完的事务自动回滚吧.
YiYanXiYin 2004-08-04
  • 打赏
  • 举报
回复
wcccc1(fdfd) 对了,也许你说在点子上了,但我还是有点怀疑,为什么sqlserver2005中要弄一个try...catch来捕捉错误呢?
YiYanXiYin 2004-07-29
  • 打赏
  • 举报
回复
没有用,出错后,后面的所有代码所有处理都是白费
zjcxc 元老 2004-07-28
  • 打赏
  • 举报
回复
riseerror? 是raiserror吧? 这个是产生错误用的
YiYanXiYin 2004-07-27
  • 打赏
  • 举报
回复
insert into t2 select 'abc'
就是呀,这句后面的任何语句好像都执行不了
zjcxc 元老 2004-07-27
  • 打赏
  • 举报
回复
SQL的错误处理太弱了一点,遇到这种错误,SQL语句无法执行下去.:
insert into t2 select 'abc'
zjcxc 元老 2004-07-27
  • 打赏
  • 举报
回复
begin tran
create table t1(a int);
if @@error <>0 begin
select '执行失败'
rollback tran
return
end
create table t2(b int);
if @@error <>0 begin
select '执行失败'
rollback tran
return
end

insert into t1 select 1000;
if @@error <>0 begin
select '执行失败'
rollback tran
return
end

select * from t1
if @@error <>0 begin
select '执行失败'
rollback tran
return
end

insert into t2 select 'abc'
if @@error <>0 begin
select '执行失败'
rollback tran
return
end

select * from t2
if @@error =0 begin
select '执行成功'
commit tran
end else begin
select '执行失败'
rollback tran
end

victorycyz 2004-07-27
  • 打赏
  • 举报
回复

用raiserror呀。
viptiger 2004-07-27
  • 打赏
  • 举报
回复
begin tran
create table t1(a int);
create table t2(b int);
insert into t1 select 1000;
select * from t1
insert into t2 select 'abc'
select * from t2
if @@error =0 begin
select '执行成功'
commit tran
end else begin
select '执行失败'
rollback tran
print '执行失败'
end
aht1979 2004-07-27
  • 打赏
  • 举报
回复
begin tran
create table t1(a int);
create table t2(b int);
insert into t1 select 1000;
select * from t1
insert into t2 select 'abc'
select * from t2
if @@error =0 begin
print('执行成功')
commit tran
end else begin
print( '执行失败')
rollback tran
end

YiYanXiYin 2004-07-27
  • 打赏
  • 举报
回复
sqlserver里面有riseerror吗?举个例子来看看
sisijianjian 2004-07-27
  • 打赏
  • 举报
回复
这样还是显示不出来'执行失败'啊
还是要用riseerror好一点吧

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧