SQL Server 简单命令


@@ROWCOUNT================================

@@ROWCOUNT是返回受上一语句影响的行数。并不是取得总记录数
可以这样写得到所有记录
把set @iRecordCount=@@rowcount 替换成
select @iRecordCount=count(*) from #t
这样就可以得到总记录数

@@TRANCOUNT===============================
每一个BEGIN TRAN 语句都会使@@TRANCOUNT增加1并且每一个COMMIT TRAN语句都会使其减少1
一个值为
0@@TRANCOUNT意味着没有打开的事务。
@@TRANCOUNT值从1降到0时结束的事务发生在外层事务提交的时候,每一个内部事务都需要提交。
由于事务起始于第一个
BEGIN TRAN并结束于最后一个COMMIT TRAN,因此最外层的事务决定了是否完全提交内部的事务。
如果最外层的事务没有被提交,其中嵌套的事务也不会被提交。

XACT_STATE()====================================================
用于报告当前正在运行的请求的用户事务状态的标量函数。XACT_STATE 指示请求是否有活动的用户事务,以及是否能够提交该事务。

返回值 含义

1

当前请求有活动的用户事务。请求可以执行任何操作,包括写入数据和提交事务。

0

当前请求没有活动的用户事务。

-1

当前请求具有活动的用户事务,但出现了致使事务被归类为无法提交的事务的错误。请求无法提交事务或回滚到保存点;它只能请求完全回滚事务。请求在回滚事务之前无法执行任何写操作。请求在回滚事务之前只能执行读操作。事务回滚之后,请求便可执行读写操作并可开始新的事务。

当批处理结束运行时,数据库引擎将自动回滚所有不可提交的活动事务。如果事务进入不可提交状态时未发送错误消息,则当批处理结束时,将向客户端应用程序发送一个错误消息。该消息指示检测到并回滚了一个不可提交的事务。有关无法提交的事务的详细信息,请参阅在 Transact-SQL 中使用 TRY...CATCH。


XACT_STATE
@@TRANCOUNT 函数都可用于检测当前请求是否具有活动的用户事务。@@TRANCOUNT 不能用于确定事务是否已分类为不可提交的事务。XACT_STATE 不能用于确定是否有嵌套事务。

ERROR_NUMBER()=========================================

在 CATCH 块中调用时,返回导致运行 CATCH 块的错误消息的错误号。
如果在 CATCH 块作用域以外调用,则返回 NULL。
可以在 CATCH 块的作用域内的任何位置调用此函数。
不管在 CATCH 块的作用域内运行的次数和位置,ERROR_NUMBER 都返回错误号。这与 @@ERROR 不同,后者只在紧跟导致错误的语句的语句中或 CATCH 块的第一个语句中返回错误号。
在嵌套的 CATCH 块中,ERROR_NUMBER 返回特定于其被引用的 CATCH 块作用域的错误号。例如,外部 TRY...CATCH 构造的 CATCH 块可能具有嵌套 TRY...CATCH 构造。在嵌套的 CATCH 块中,ERROR_NUMBER 返回调用嵌套的 CATCH 块的错误的编号。如果 ERROR_NUMBER 在外部 CATCH 块中运行,则返回调用此 CATCH 块的错误的编号。

=SET NOCOUNT===========================================================
默认情况下,存储过程将返回过程中每个语句影响的行数。如果不需要在应用程序中使用该信息(大多数应用程序并不需要),请在存储过程中使用 SET NOCOUNT ON 语句以终止该行为。根据存储过程中包含的影响行的语句的数量,这将删除客户端和服务器之间的一个或多个往返过程。尽管这不是大问题,但它可以为高流量应用程序的性能产生负面影响

当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。

如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。

即使当 SET NOCOUNT 为 ON 时,也更新 @@ROWCOUNT 函数。 当 SET NOCOUNT 为 ON 时,将不给客户端发送存储过程中的每个语句的 DONE_IN_PROC 信息。当使用 Microsoft® SQL Server™ 提供的实用工具执行查询时,在 Transact-SQL 语句(如 SELECT、INSERT、UPDATE 和 DELETE)结束时将不会在查询结果中显示"nn rows affected"。

在你统计大量的数据的数量,而又不需要详细的查看每一条记录的时候可以用OFF















 

posted @ 2008-01-30 09:49  IamV  阅读(633)  评论(0编辑  收藏  举报