SQL Cursor(游标)

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

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

Cursor:Global for--全局游标

Cursor:Local for--局部游标

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

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

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

通过游标循环数据

 
  1. declare test_Cursor Cursor scroll for
  2. select id,materialName from dbo.table_1
  3.  
  4. open test_Cursor
  5. declare @c nvarchar(10)
  6. declare @name nvarchar(1000)
  7.  
  8. while @@FETCH_STATUS=0
  9. begin
  10. fetch next from test_Cursor into @c,@name
  11. select @c,@name
  12. end
  13. --最后执行
  14. CLOSE test_Cursor
  15. DEALLOCATE test_Cursor

猜你喜欢

转载自blog.csdn.net/ole_triangle_java/article/details/105550264