注册
登录
论坛
搜索
社区银行
帮助
导航
私人消息 (0)
公共消息 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
黑色海岸线论坛
»
网络安全
» MSSQL中游标的使用
返回列表
发帖
发短消息
加为好友
chinanic
(黑冰cn)
当前离线
巡海头狼
帖子
6440
我的爱好
阅读权限
150
来自
贵州遵义
在线时间
456 小时
总版主
主题
0
积分
854
贝壳
854 个
性别
男
来自
贵州遵义
注册时间
2005-3-26
最后登录
2011-2-26
楼主
跳转到
»
倒序看帖
打印
字体大小:
t
T
chinanic
发表于 2008-8-7 17:04
|
只看该作者
MSSQL中游标的使用
马上奥运开幕了,做为地方门户,咳,总得有个奥运会报道吧,于是,折腾了一天,弄了个奥运会进程与奖牌排行,下面这个存储过程实现了奖牌榜的生成。
重点:
1、表变量的声明与使用,表变量不支持索引。
2、游标的使用,在存储过程中使用游标的 FEACH NEXT 对多行数据进行处理,游标使用完毕必须销毁。
CREATE PROCEDURE Olympic_Medal_Count
AS
--变量定义
DECLARE @Country varchar(50)
DECLARE @GoldenMedalNum int
DECLARE @SilverMedalNum int
DECLARE @CopperMedalNum int
DECLARE @i int
SET @i=0
--表变量
DECLARE @tmpTable table(
ID smallint IDENTITY(1,1),
Country varchar(50),
Gold int,
Silver int,
Copper int,
OrderNum int
)
--游标引用
DECLARE medal_cursor CURSOR FOR
SELECT COUNT(*) AS MedalNum, Country
FROM Olympic_Medals
WHERE (Medal = 1)
GROUP BY Country
ORDER BY MedalNum DESC
OPEN medal_cursor
--提取第一名
FETCH NEXT FROM medal_cursor
INTO @GoldenMedalNum,@Country
WHILE @@FETCH_STATUS = 0
BEGIN
SET @i=@i+1
--取该国家银牌
SELECT @SilverMedalNum=COUNT(*) From Olympic_Medals where Medal=2 and Country=@Country
--取该国家铜牌
SELECT @CopperMedalNum=COUNT(*) From Olympic_Medals where Medal=3 and Country=@Country
--将数据插入表变量
Insert Into @tmpTable Values(@Country,@GoldenMedalNum,@SilverMedalNum,@CopperMedalNum,@i)
FETCH NEXT FROM medal_cursor
INTO @GoldenMedalNum,@Country
END
SELECT * From @tmpTable
--关闭游标
CLOSE medal_cursor
--删除游标引用
DEALLOCATE medal_cursor
GO
复制代码
[
本帖最后由 chinanic 于 2008-8-7 17:17 编辑
]
收藏
分享
天行健,君子以自强不息
地势坤,君子以厚德载物
黑色海岸线欢迎您
QQ群:7212260
致力于探索WEB技术精髓:http://www.bitechcn.com
点这里加我!
返回列表
回复
发帖
使用交流
网络安全
网络技术
娱乐休闲
灌水乐园
文学天地
美图欣赏
网站办公
站务处理
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]