关于sql server 中 @@error 问题
首先看MSN上的解释:
返回执行的上一个 Transact-SQL 语句的错误号。
返回类型 integer
备注:
如果前一个 Transact-SQL 语句执行没有错误,则返回 0。
如果前一个语句遇到错误,则返回错误号。如果错误是 sys.messages 目录视图中的错误之一,则 @@ERROR 将包含 sys.messages.message_id 列中表示该错误的值。可以在 sys.messages 中查看与 @@ERROR 错误号相关的文本信息。
由于 @@ERROR 在每一条语句执行后被清除并且重置,因此应在语句验证后立即查看它,或将其保存到一个局部变量中以备以后查看。
SQL Server 2005 数据库引擎 引入 TRY...CATCH 构造来处理错误。TRY...CATCH 构造也支持其他返回的错误信息多于 @@ERROR 的系统函数(ERROR_LINE、ERROR_MESSAGE、ERROR_PROCEDURE、ERROR_SEVERITY 和 ERROR_STATE)。TRY...CATCH 也支持 ERROR_NUMBER 函数,但不限制该函数在语句产生错误后立即在语句中返回错误号。有关详细信息,请参阅 TRY...CATCH (Transact-SQL)。
示例: 用 @@ERROR 有条件地退出一个过程:




























begin tran ok --开始一个事务 OK
delete from rxqz where qz= 'rx015 ' --删除数据
save tran bcd --保存一个事务点 命名为 bcd
update sz set name='李丽s' where name= '李丽'--修改数据
if @@error=0 --判断修改数据有没有出错
begin --如果出错
rollback tran bcd -- 回滚事务到 BCD 的还原点
commit tran ok --提交事务
end
else --出错
commit tran ok --提交事务
@@error=0 是判断
update sz set name= '李丽s ' where name= '李丽 ' 这句有没有报错
SAVE TRANSACTION
在事务内设置保存点。
用户可以在事务内设置保存点或标记。保存点定义如果有条件地取消事务的一部分,事务可以返回的位置。如果将事务回滚到保存点,则必须(如果需要,使用更多的 Transact-SQL 语句和 COMMIT TRANSACTION 语句)继续完成事务,或者必须(通过将事务回滚到其起始点)完全取消事务。若要取消整个事务,请使用 ROLLBACK TRANSACTION transaction_name 格式。这将撤消事务的所有语句和过程。
update sz set name= '李丽s ' where name= '李丽 ' 这句有没有报错
SAVE TRANSACTION
在事务内设置保存点。
用户可以在事务内设置保存点或标记。保存点定义如果有条件地取消事务的一部分,事务可以返回的位置。如果将事务回滚到保存点,则必须(如果需要,使用更多的 Transact-SQL 语句和 COMMIT TRANSACTION 语句)继续完成事务,或者必须(通过将事务回滚到其起始点)完全取消事务。若要取消整个事务,请使用 ROLLBACK TRANSACTION transaction_name 格式。这将撤消事务的所有语句和过程。
@@error判断是否有错误,但是对那种重大错误无法捕捉
而且@@error只能前一句sql语句生效
而且@@error只能前一句sql语句生效