昨天在帮同事看一下SQL SERVER的存储过程问题,虽然我平时做ORACLE更多点,但是,找问题的方法都是相通的。
这个有问题的存储过程是一个400行左右的存储过程。一开始就发现只到执行到RETURE就会报错,但是编译的时候是不会报错的。
错误如下:消息 0,级别 11,状态 0,第 0 行
当前命令发生了严重错误。应放弃任何可能产生的结果。
当前命令发生了严重错误。应放弃任何可能产生的结果。
后来经过测试发现,这个RETURN是放在一个事务里的,才导致了这个问题。要解决这个问题其实很简单,因为RETURN是完全不用放在事务里的,只要调整程序的编写顺序。第二种方式就是用一个全局变量并主动报错(如:set @num = 1/0)让程序跳到CATCH块中再RETURN 相应的值。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23065269/viewspace-709395/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23065269/viewspace-709395/