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
时间: 2024-10-25 17:48:52