--Title:怎样让存储过程里对一个表 循环
--Author: Alvin (从http://dev.csdn.net/article/84/84029.shtm提取出来)
--Date: 2006-4-17
--Description: 怎样让存储过程里对一个表 循环
--Environment: Sql2005
--KeyWord: Sql2005 循环
--
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[t1]
create table t1
(
f1 int,
f2 varchar(30)
)
Insert into t1(f1,f2) values(1,'A')
Insert into t1(f1,f2) values(2,'B')
Insert into t1(f1,f2) values(3,'C')
Insert into t1(f1,f2) values(4,'D')
Insert into t1(f1,f2) values(5,'E')
Insert into t1(f1,f2) values(6,'F')
Insert into t1(f1,f2) values(7,'G')
select * from t1
/* 变量申明 */
declare @classID int
/* 定义游标 */
declare cursor_classID
CURSOR FOR
SELECT f1 FROM t1
/*
打开游标
@@FETCH_STATUS
返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
0 表示 FETCH 语句成功。
*/
OPEN cursor_classID
FETCH NEXT FROM cursor_classID INTO @classID
WHILE @@FETCH_STATUS = 0
/* 搜索某一类别中点击率最高的一条记录 */
BEGIN
print @classID
FETCH NEXT FROM cursor_classID
INTO @classID
END
/* 关闭游标 */
CLOSE cursor_classID
/* 删除游标引用 */
DEALLOCATE cursor_classID