一个容易忽视的存储过程问题
2005-10-11 09:30
423 查看
在MS SQL SEVER的存储过程中,最好加上事务哦,一般的书上都没提到这点,以后要注意下:
set xact_abort on
begin transcation
/**中间执行的SQL代码*/
commit transcation
if @@error>0
rollback
SET XACT_ABORT
指定当 Transact-SQL 语句产生运行时错误时,Microsoft? SQL Server? 是否自动回滚当前事务
,当设置为ON时,如果产生错误,则回滚整个事务,为OFF时,只回滚产生错误的SQL语句,而事务继续进行处理。
如果 Transact-SQL 语句执行成功,则 @@ERROR 系统函数返回 0;如果此语句产生错误,则 @@ERROR 返回错误号。每一个 Transact-SQL 语句完成时,@@ERROR 的值都会改变。
因为每个 Transact-SQL 语句执行完毕时,@@ERROR 都会得到一个新的值,@@ERROR 可用以下两种方法处理:
1.在 Transact-SQL 语句后,马上检测或使用 @@ERROR。
2.在 Transact-SQL 语句完成后,马上把 @@ERROR 存储到一个整型变量中。此变量的值可供以后使用。
@@ERROR 通常用于表示存储过程的成功或失败。整型变量初始化为 0。完成每个 Transact-SQL 语句后,都要测试 @@ERROR 是否为 0。如果 @@ERROR 不是 0,将被存储在变量中。存储过程然后在 RETURN 语句中返回变量。如果过程中的 Transact-SQL 语句都没有错误,变量保持为 0。如果一个或多个语句生成错误,则变量包含最后的错误号。
set xact_abort on
begin transcation
/**中间执行的SQL代码*/
commit transcation
if @@error>0
rollback
SET XACT_ABORT
指定当 Transact-SQL 语句产生运行时错误时,Microsoft? SQL Server? 是否自动回滚当前事务
,当设置为ON时,如果产生错误,则回滚整个事务,为OFF时,只回滚产生错误的SQL语句,而事务继续进行处理。
如果 Transact-SQL 语句执行成功,则 @@ERROR 系统函数返回 0;如果此语句产生错误,则 @@ERROR 返回错误号。每一个 Transact-SQL 语句完成时,@@ERROR 的值都会改变。
因为每个 Transact-SQL 语句执行完毕时,@@ERROR 都会得到一个新的值,@@ERROR 可用以下两种方法处理:
1.在 Transact-SQL 语句后,马上检测或使用 @@ERROR。
2.在 Transact-SQL 语句完成后,马上把 @@ERROR 存储到一个整型变量中。此变量的值可供以后使用。
@@ERROR 通常用于表示存储过程的成功或失败。整型变量初始化为 0。完成每个 Transact-SQL 语句后,都要测试 @@ERROR 是否为 0。如果 @@ERROR 不是 0,将被存储在变量中。存储过程然后在 RETURN 语句中返回变量。如果过程中的 Transact-SQL 语句都没有错误,变量保持为 0。如果一个或多个语句生成错误,则变量包含最后的错误号。
相关文章推荐
- 一个容易忽视的存储过程问题
- 一个容易忽视的存储过程问题
- 同一个存储过程中,不能多次select into 到同一张表的问题
- 一个容易忽视的Oracle安全问题
- [PL/SQL] 请教大家一个问题,存储过程中需要几个commit?
- 存储过程里使用select要注意的一个问题!
- 发现一个Exec执行执行存储过程的问题
- sql server一个容易忽视的“漏洞”------SELECT INTO 语句 潜在问题
- WinForm异步编程中一个容易忽视的问题
- 关于MsSql2000中对于存储过程中的一个问题
- 使用SQL Server Business Intelligence Development Studio 2005设计报表模型时的一个容易被忽视的问题
- 一个容易忽视的Oracle安全问题
- 一个容易忽视的Oracle安全问题
- Visual C++ Tips: 程序执行路径,一个容易被忽视的问题
- 学习Drupal一个容易被忽视的问题
- 在Oracle中建表时容易忽视的一个小问题
- 关于USART很多人都容易忽视的一个问题
- 一个容易忽视的Oracle安全问题
- 请博客园的高手们帮忙看一个问题 为什么 set datefirst 1 写到存储过程中就不起作用了.
- 关于SQL的存储过程一个悬而未决的老问题