• SQL Cursor(游标)


    1.游标在数据表没有id(identity(1,1))时好用,但是游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源,当然还有更多的代码量

    2.如果能不用游标,尽量不要使用游标,用完用完之后一定要关闭和释放, 尽量不要在大量数据上定义游标,尽量不要使用游标上更新数据

    Cursor:Global for--全局游标

    Cursor:Local for--局部游标

    LOCAL意味着游标的生存周期只在批处理或函数或存储过程中可见

    GLOBAL意味着游标对于特定连接作为上下文,全局内有效

    --第一步:声明游标
    declare test_Cursor Cursor scroll for
    select name  from dbo.aa
    open test_Cursor--打开游标
    --第二遍执行
    declare @name nvarchar(1000)
    fetch next from test_Cursor into @name--下一行
    select @name
    --第三遍关闭清空游标
    CLOSE test_Cursor--关闭
    DEALLOCATE test_Cursor--清空
    /*只有支持6种移动选项,分别为到第一行(FIRST),
      最后一行(LAST),下一行(NEXT),上一行(PRIOR),
      直接跳到某行(ABSOLUTE(n)),
      相对于目前跳几行(RELATIVE(3))*/
    

    通过游标循环数据

    declare test_Cursor Cursor scroll for
    select id,materialName from dbo.table_1
    
    open test_Cursor
    declare @c nvarchar(10)
    declare @name nvarchar(1000)
    
    while @@FETCH_STATUS=0
    begin
    fetch next from test_Cursor into @c,@name
    select @c,@name
    end
    --最后执行
    CLOSE test_Cursor
    DEALLOCATE test_Cursor
    

      

  • 相关阅读:
    LeetCode 128. 最长连续序列
    MySQL的information_schema
    maven项目板块的pom.xml配置
    mybatis打印SQL日志
    MySQL的时间字段转换
    mysql的csv数据导入与导出
    一致性协议
    分布式事务
    事务基本信息
    分布式系统定义及特点
  • 原文地址:https://www.cnblogs.com/Evan-Pei/p/4648969.html
Copyright © 2020-2023  润新知