Tsql 如何有目的地测试事务中的错误?

Tsql 如何有目的地测试事务中的错误?,tsql,sybase,Tsql,Sybase,我有一个存储过程,在一个循环中有几个事务: WHILE @COUNT < @MY_NUM BEGIN BEGIN TRANSACTION -- DO STUFF HERE IF(@@ERROR != 0) BEGIN ROLLBACK TRANSACTION BREAK END COMMIT TRANSACTION END 而@COUNT

我有一个存储过程,在一个循环中有几个事务:

WHILE @COUNT < @MY_NUM
BEGIN
  BEGIN TRANSACTION
  -- DO STUFF HERE

  IF(@@ERROR != 0)
  BEGIN
    ROLLBACK TRANSACTION
    BREAK
  END

  COMMIT TRANSACTION
END
而@COUNT<@MY_NUM
开始
开始交易
--在这里做事
如果(@@ERROR!=0)
开始
回滚事务
打破
结束
提交事务
结束
现在,我想测试我的
ROLLBACK事务
BREAK
逻辑是否会工作,方法是在一定次数的运行后故意向循环引入错误并查看数据

此外,我从shell脚本运行这些存储过程。所以,我想在运行过程中使用<代码> Ctrl +C<代码>代码。这样行吗?如果不是,我如何有目的地引入错误


谢谢

您可以执行以下操作之一:

  • 故意造成像被零除这样的错误
  • 使用

  • 您可以执行以下操作之一:

  • 故意造成像被零除这样的错误
  • 使用

  • 您可以使用
    打印

    WHILE @COUNT < @MY_NUM
    BEGIN
      BEGIN TRANSACTION
      print 'BEGIN TRANSACTION'
      -- DO STUFF HERE
      print '-- DO STUFF HERE'
      IF(@@ERROR != 0)
      BEGIN
        ROLLBACK TRANSACTION
        print 'ROLLBACK TRANSACTION @MY_NUM: %1!',convert(varchar,@MY_NUM)
        BREAK
      END
    
      COMMIT TRANSACTION
      print 'COMMIT TRANSACTION'
    END
    
    而@COUNT<@MY_NUM
    开始
    开始交易
    打印“开始交易”
    --在这里做事
    打印“--在这里做事”
    如果(@@ERROR!=0)
    开始
    回滚事务
    打印“回滚事务@MY_NUM:%1!”,转换(varchar,@MY_NUM)
    打破
    结束
    提交事务
    打印“提交事务”
    结束
    

    它是指向文档的链接。

    您可以使用
    打印

    WHILE @COUNT < @MY_NUM
    BEGIN
      BEGIN TRANSACTION
      print 'BEGIN TRANSACTION'
      -- DO STUFF HERE
      print '-- DO STUFF HERE'
      IF(@@ERROR != 0)
      BEGIN
        ROLLBACK TRANSACTION
        print 'ROLLBACK TRANSACTION @MY_NUM: %1!',convert(varchar,@MY_NUM)
        BREAK
      END
    
      COMMIT TRANSACTION
      print 'COMMIT TRANSACTION'
    END
    
    而@COUNT<@MY_NUM
    开始
    开始交易
    打印“开始交易”
    --在这里做事
    打印“--在这里做事”
    如果(@@ERROR!=0)
    开始
    回滚事务
    打印“回滚事务@MY_NUM:%1!”,转换(varchar,@MY_NUM)
    打破
    结束
    提交事务
    打印“提交事务”
    结束
    
    它是指向文档的链接