1、使用OUTPUT类型参数的存储过程
一般的存储过程都是直接返回一段记录集给调用者,但是有的时候我们只需要一些存储过程返回的一些参数的值,这时候可以指定存储过程的OUTPUT参数,比如:
以上的存储过程中传递进的参数是@uid,而参数@username则在调用时不需要传递进去。
这样,存储过程会返回给参数@username的值是‘hongchao’。
注意:当在SQL2000中时,如果存储过程只有一个参数,并且这个参数是OUTPUT类型的,必须在调用此存储过程时给这个参数一个初始的值,否则会出现调用错误的情况!
2、存储过程中使用数据库事务处理
在很多的情况下,在存储过程中都会遇到需要同时操作多个表的情况,此时就需要避免在操作的过程中由于以外而造成的数据的不一致性。
此时就需要将操作多个表的操作放入到事务中进行处理。
注意:不能在事务中使用return语句强行退出,这样会引发事务的非正常错误,不能保证数据的一致性。
并且,一旦将多个处理放入事务当中,系统的处理速度会有所降低,所以应当将频繁操作的多个可分割的处理过程放入到多个存储过程当中,这样会大大提高系统的响应速度,但是前提是不违背数据的一致性。
3、SQL Server 事务回滚处理
当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_ABORT 的影响。
对于大多数 OLE DB 提供程序(包括 SQL Server),隐性或显式事务中的数据修改语句必须将 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是提供程序支持嵌套事务时。有关更多信息,请参见分布式查询和分布式事务。
SET XACT_ABORT 的设置是在执行或运行时设置,而不是在分析时设置。