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

解决方案 »

  1.   

    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
      

  2.   


        用raiserror呀。
      

  3.   

    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
      

  4.   

    SQL的错误处理太弱了一点,遇到这种错误,SQL语句无法执行下去.:
    insert into t2 select 'abc'
      

  5.   

    insert into t2 select 'abc'
    就是呀,这句后面的任何语句好像都执行不了
      

  6.   

    这样还是显示不出来'执行失败'啊
    还是要用riseerror好一点吧
      

  7.   

    sqlserver里面有riseerror吗?举个例子来看看
      

  8.   

    riseerror? 是raiserror吧? 这个是产生错误用的
      

  9.   

    wcccc1(fdfd) 对了,也许你说在点子上了,但我还是有点怀疑,为什么sqlserver2005中要弄一个try...catch来捕捉错误呢?