declare my_cursor cursor keyset for select * from info
--删除游标资源
deallocate my_cursor
--打开游标,在游标关闭或删除前都有效
open my_cursor
--关闭游标
close my_cursor
--声明局部变量
declare @id int,@name varchar(20),@address varchar(20)
--定位到指定位置的记录
fetch absolute 56488 from my_cursor into @id,@name,@address
select @id as id,@name as name,@address as address
--定位到当前记录相对位置记录
fetch relative -88 from my_cursor into @id,@name,@address
select @id as id,@name as name,@address as address
--定位到当前记录前一条
fetch prior from my_cursor into @id,@name,@address
select @id as id,@name as name,@address as address
--定位到当前记录后一条
fetch next from my_cursor into @id,@name,@address
select @id as id,@name as name,@address as address
--定位到首记录
fetch first from my_cursor into @id,@name,@address
select @id as id,@name as name,@address as address
--定位到尾记录
fetch last from my_cursor into @id,@name,@address
select @id as id,@name as name,@address as address
一个例子:
-- =============================================
-- Create procedure basic template
-- =============================================
-- creating the store procedure
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = N'chy'
AND type = 'P')
DROP PROCEDURE chy
GO
CREATE PROCEDURE chy
AS
declare @change varchar(30)
declare @id int
DECLARE curr CURSOR
for select [id] from a
open curr
fetch next from curr into @id
while(@@fetch_status<>-1)
begin
select @change=aa from a where [id]=@id
set @change=substring(@change,0,3)
update a set bb=@change where [id]=@id
fetch next from curr into @id
end
close curr
DEALLOCATE curr
GO
-- =============================================
-- example to execute the store procedure
-- =============================================
EXECUTE chy
GO