游标

create database D13
go
use D13

create table UserInfo
(
    ID int primary key identity,
    Account varchar(20),
    Password varchar(20),
    Status int
)
insert into UserInfo values 
('Test1','test1',0),
('Test2','test2',0),
('Test3','test3',0),
('Test4','test4',0),
('Test5','test5',0),
('Test6','test6',0),
('Test7','test7',0),
('Test8','test8',0),
('Test9','test9',0),
('Test10','test10',0)

create table UserStatus 
(
    Id int primary key identity,
    uid int,
    isdelete int
)
insert into UserStatus values
(1,1),
(2,1),
(3,1),
(4,1),
(5,1),
(6,1),
(7,1),
(8,1),
(9,1),
(10,1)

--创建一个游标。(5分)
--定义一个局部变量,变量名为 TID(5分)
--逐条读取UserInfo表的数据,并把当前数据的ID值赋给变量TID(5分)
--更新UserStatus表的isdelete字段值为0,条件为uid字段值等于变量TID(5分)

--定义游标
declare my_cursor cursor for
select ID from UserInfo
--打开游标
open my_cursor
--定义变量
declare @TID int
--循环读取并赋值
fetch next from my_cursor into @TID
while @@FETCH_STATUS=0
begin 
update UserStatus set isdelete=0 where uid=@TID
--获取下一数据并赋值
fetch next from my_cursor into @TID
end
--关闭游标
close my_cursor
--删除游标
deallocate my_cursor

select * from UserStatus

--1.游标的优劣势是什么?(20分)
--答:优点:可以对select返回的行集合中的每一行执行不同操作

--缺点:处理大量数据时,效率低,占内存大
--2.@@CURSOR_ROWS什么?(20分)
--答:是一个全局变量,用来记录当前游标的数量,即从表中加载到游标中的行数

--3.什么是索引?(20分)
--答:索引是一种结构,可以快速访问数据库表中特定信息的结构

 

你可能感兴趣的:(游标)