区别
1.储存过程可以有返回值也可以无返回值。函数必须有返回值。
2.存储过程的实现比较复杂,而函数的实现比较有针对性。
3.存储过程可以输入输出参数,而函数只可以输入参数。
4.过程允许在其中选择以及DML语句,而函数只可以在其中select语句。
5.可以在存储过程中调用函数,不可以在函数中调用存储过程。
存储过程事务
set Nocount on 当SET NOCOUNT 为ON 时, 不返回计数 (计数表示受Transact-SQL 语句影响的行数,例如在Sql server查询分析器中执行一个delete操作后,下方窗口会提示()Rows Affected)。当 SET NOCOUNT 为OFF 时,返回计数,我们应该在存储过程的头部加上SET NOCOUNT ON 这样的话,在退出存储过程的时候加上SET NOCOUNT OFF这样的话,以达到优化存储过程的目的。
set XACT_ABORT ON --使用存储过程执行事物,需要开启XACT_ABORT参数(默认值为Off),将该参数设置为 On ,表示当执行事务时, 如果出错,会将transcation设置为uncommittable状态 ,那么在语句块批处理结束后将回滚所有操作;如果该参数设置为 Off ,表示当执行事务时,如果出错, 出错的语句将不会执行,其他正确的操作继续执行 。