sql service 存储过程,游标的使用
1、建表
DROP TABLE dbo.users
GOCREATE TABLE dbo.users (
id int NOT NULL ,
name varchar(32) NULL
)
GO
ALTER TABLE dbo.users ADD PRIMARY KEY (id)GO
2、添加数据
--删除存储过程
if (exists (select * from sys.objects where name = 'insert_users'))
drop proc insert_users
go
--创建存储过程
create proc insert_users as
begin
declare @i int;
set @i = 0;
while @i <100
begin
set @i = @i + 1;
insert into dbo.users values(@i, cast(@i as VARCHAR)+'name');
end
end
--执行存储过程
exec insert_users
3游标的使用
--删除存储过程
if (exists (select * from sys.objects where name = 'my_proc_cursor'))
drop proc my_proc_cursor
go
--创建存储过程
create proc my_proc_cursor as
begin
DECLARE @id int,@name VARCHAR(32);
--定义游标
declare my_cursor CURSOR for select top 10 * from dbo.users;
--打开游标
open my_cursor;
--首次填充数据
FETCH NEXT FROM my_cursor into @id, @name;
--假如检索到了数据,才处理
WHILE @@fetch_status = 0
BEGIN
select @id, @name;
--再次填充数据,(相当于i=i+1的操作)
FETCH NEXT FROM my_cursor into @id, @name;
END
end
--执行存储过程
exec my_proc_cursor