• SQL Server中Rowcount与@@Rowcount的用法


    使用rowcount

    rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,

    rowcount的设置会在整个会话中有效

    SET ROWCOUNT 10
    SELECT * FROM dbo.Customer ORDER BY id desc

    使用完之后可以设置为:

    SET ROWCOUNT 0

    表示下面的查询或者其他操作就可以操作全部,

    否则在下面的代码中可能还使用设置为10的这个数量

    因为这个 设置:SET ROWCOUNT 10 是针对整个会话的

    使用top:

    后面不能加动态参数,只能跟整数

    select top 10 *  from dbo.Customer ORDER BY id DESC

    如果要加,需要使用拼字符串的方式

    比如:

    declare @n int
    declare @sql nvarchar(1000)
    set @n=10
    set @sql='select top '+cast(@n as varchar(10))+' * from dbo.Customer'
    exec(@sql)

    性能和可读性都不如rowcount

    另外rowcount的作用

    还可以用于修改和删除


    @@rowcount返回影响上次sql语句所影响的行数

    select top 2 * from Customer
    select @@Rowcount

    --如果表存在的数据大于等于2,则返回2
    --如果为1或者0,则@@rowcount返回也是1或者0

    注意:删除 修改 查询,新增 都会返回受影响的行数

    这玩意用的比较多的对方是:触发器

    例如

    create trigger ti_tablea on Customer after update
    as
    if @@rowcount=0 return
    ……

    这样表Customer 受影响的行数如果为0,触发器就会直接退出,不会在继续往下执行

    第二个用的地方可能是递归或者循环

    declare @n int
    set @n=1
    select * from client_goods where id=@n

    while @@rowcount>0
    begin
    set @n=@n+1
    select * from client_goods where id=@n
    end

     

  • 相关阅读:
    F查询和Q查询
    Django ORM 常用字段和参数
    Django的路由系统
    Django模板系统
    Django中的视图(view)
    Django应用app创建及ORM
    TP90,TP99,TP999,MAX含义
    TDD、BDD、ATDD、DDD 软件驱动开发模式比较
    liunx 安装chrome的方法
    nginx 反向代理mysql
  • 原文地址:https://www.cnblogs.com/niuzaihenmang/p/5640276.html
Copyright © 2020-2023  润新知