• SQL--Rowcount、@@Rowcount、SET NOCOUNT的用法


    一,rowcount的用法
    作用:rowcount的作用就是限定后面sql语句的返回行数,
    set rowcount 10
    select * from table
    查询的结果只会返回表table中的前10条数据。它和 "select top 10 * from table" 的作用一样。set rowcount 的设置会在整个会话中有效。比如下面的sql示例:
    set rowcount 10
    select * from table1
    go
    select * from table2
    table1和table2都只会返回前10条数据。
    对于删除和更新也可以限定
    set rowcount 10
    update table1 set neme=‘张三’ --更新table1前10行数据
    set rowcount 10
    delete from table1 --删除table1前10行数据
    要取消set rowcount的限定,只要设置 set rowcount 0 就可以了.
    存储过程写法举例:
    declare @n int --声明参数‘N’
    set @n=10 --设置n=10
    set rowcount @n --限定返回行数
    select * from 表A --查询表前10行数据
    二,@@Rowcount的用法
    作用:@@Rowcount与Rowcount看起来很像,只相差了两个@,但它们的功能是不一样的,@@Rowcount主要是返回上次sql语句所影响的数据行数,比如:
    select top 2 * from 表A
    select @@Rowcount
    如果表A中的数据量大于或等于2,那么select @@Rowcount就会返回2,如果只有1条或0条数据,那么select @@Rowcount就会返回1或者0。
    注意,不要把@@Rowcount理解为只返回查询的结果数量,删除,修改,新增等语句,也会正确的返回@@Rowcount值。比如:
    update 表A set name='张三' where name='李四'
    select @@Rowcount --查询更新的行数
    如果表A中存在name='李四'的数据,那么select @@Rowcount就会返回它所修改数据的行数,如果不存在name='李四'的数据,那么select @@Rowcount就会返回0,删除与新增都是同样。
    存储过程写法举例:
    declare @n int --声明参数N
    set @n=1 --赋值N为1
    select * from table1 where id=@n --查询表中id为1的数据
    while @@rowcount>0 --循环如果查询到id为1的行数大于0。如果有等于1的数据,返回的行数肯定是大于0的
    begin
    set @n=@n+1 --继续给N赋值加1
    select * from table1 where id=@n --查询表中ID等于N的数据
    end
    这个示例是先查询表中是否有id=1的数据,如果有,再查询是否有id=2的数据,一直查下去,直到id没有连续为止。
    三,SET NOCOUNT的用法
    作用:阻止在结果集中返回显示受T-SQL语句或则usp影响的行计数信息。
    当SET ONCOUNT ON时候,不返回计数,当SET NOCOUNT OFF时候,返回计数;
    即使当SET NOCOUNT ON 时候,也更新@@RowCount;
    当SET NOCOUNT on时候,将不向客户端发送存储过程每个语句的DONE_IN_proc消息,如果存储过程中包含一些并不返回实际数据的语句,网络通信流量便会大量减少,可以显著提高应用程序性能;
    SET NOCOUNT 指定的设置时在执行或运行时候生效,分析时候不生效
    举例:
    SET NOCOUNT ON
    update table1 set='张三'
    返回:命令已经成功完成
    使用SET NOCOUNT OFF
    update table1 set='张三'
    返回:受影响的行数

  • 相关阅读:
    Spark RDD概念学习系列之不同角度看RDD
    Spark RDD概念学习系列之典型RDD的特征
    Spark RDD概念学习系列之RDD的本质特征
    Spark RDD概念学习系列之RDD接口
    kettle的下载、安装和初步使用(Ubuntu 16.04平台下)(图文详解)
    Neo4j下执行cypher-shell时,Connection refused问题解决?
    Ubuntu14.04下沙盒数据导入到 Neo4j 数据库(图文详解)
    Ubuntu16.04下沙盒数据导入到 Neo4j 数据库(图文详解)
    Neo4j沙盒实验申请过程步骤(图文详解)
    Ubuntu14.04下Mongodb数据库可视化工具安装部署步骤(图文详解)(博主推荐)
  • 原文地址:https://www.cnblogs.com/Lxxv5/p/15427984.html
Copyright © 2020-2023  润新知