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

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
...全文
231 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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,837

社区成员

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

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