如何故意测试交易中的错误?

时间:2012-09-17 15:28:25

标签: tsql sybase

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

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

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

  COMMIT TRANSACTION
END

我现在想测试我的ROLLBACK TRANSACTIONBREAK逻辑是否会在一定次数的运行后故意将错误引入循环并查看数据。

此外,我从shell脚本运行这些存储过程。所以,我想在运行过程中使用Ctrl + C进行测试。这会有用吗?如果没有,我怎么能故意引入错误?

由于

2 个答案:

答案 0 :(得分:2)

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

  1. 无意中导致像Divide by zero这样的错误
  2. 使用RaiseError()

答案 1 :(得分:1)

您可以使用print

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

Here它是文档的链接。