我有一个存储过程中的游标中下面的代码我一起工作:当我从SQL游标中返回时会发生什么?
SELECT @err_code = @@error
If @err_code <> 0
BEGIN
ROLLBACK TRAN
Select return_status = 'FAIL',
return_msg = 'Insert Into Errs Warnings Failed !!'
return 16
END
这个错误检查有一些表插入(仍然光标内)前。最近我遇到了一个错误,我们插入的表与编写的插入语句不匹配(列名或提供的值的数量与表定义不匹配)。我一直认为这个错误检查代码会抓住这个并且终止这个过程,但是由于某种原因,它所做的只是向日志输出错误消息并继续运行。 Column name or number of supplied values does not match table definition
是错误消息。
所以我想知道这是否与游标内部的返回有关。有可能在这种情况下,所有的return 16
都会退出游标并继续执行存储过程的其余部分?还是应该完全终止程序?我正在使用MS SQL Server 2008.
谢谢!
两个问题......你为什么不使用try/catch块?你为什么使用光标?这看起来像一个典型的过程,其中光标不是做事情的最佳方式。 – 2014-12-01 21:15:28