0

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

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在运行中间使用来测试。这行得通吗?如果没有,我怎么能故意引入错误?

谢谢

4

2 回答 2

2

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

  1. 故意导致错误,例如除以零
  2. 使用RaiseError()
于 2012-09-17T15:52:15.960 回答
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

是文档的链接。

于 2012-09-17T20:31:29.907 回答