DECLARE CURSOR FOR的使用

使用目的,利用以时间等条件参照其他表格,将会议目录抽取出来(游标的执行结果),然后以添加其他的文字形式对

结果进行修饰,由于最终目的是将会议目录以邮件的形势发布出去,所以单一的数据行查询的话,无法满足我想要得

集合结果(根据数据库设计方式不同),所以利用触发器来接受由外部发来的参数,然后利用游标将参数为条件提取数

据集,就是这样。

触发器游标部分的SQL文内容:

DECLARE @ROWSPACE VARCHAR(MAX)
DECLARE @CHARSPACE VARCHAR(MAX)
DECLARE @KARAMARK VARCHAR(6)
DECLARE @PART VARCHAR(MAX)
DECLARE @UNIONALL VARCHAR(MAX)

SET @ROWSPACE = CHAR(13)+ CHAR(10)   -- 改行
SET @CHARSPACE = ' '                                  -- 空格
SET @KARAMARK = ' ~ '
SET @LIST_CD = (SELECT LIST_CD FROM MST_MEETING WHERE YEAR = @param_YEAR AND MEETING_CD = @param_MEETING_CD)
SET @PART = ''
SET @UNIONALL = ''

BEGIN

DECLARE LOOP_T CURSOR FOR --游标的宣言

-- 以条件提取结果集的一部分

SELECT
@CHARSPACE + ISNULL(CONVERT(VARCHAR(10), DATE, 111), '')
+ @CHARSPACE + ISNULL(NAME, '')
+ @CHARSPACE + ISNULL(CONVERT(VARCHAR(5), START_TIME, 108), '')
+ @KARAMARK + ISNULL(CONVERT(VARCHAR(5), END_TIME, 108), '') AS DETAILS
FROM T_MEETING_LIST WHERE YEAR = @param_YEAR AND MEETING_CD = @param_MEETING_CD

--打开游标

OPEN LOOP_T;

-- 将提取结果带入游标

FETCH NEXT FROM LOOP_T INTO @PART;

WHILE @@FETCH_STATUS = 0

   BEGIN

-- 对游标内容进行修饰,如该行

SET @UNIONALL = @UNIONALL + @ROWSPACE + @PART

-- 将修饰内容代入游标

FETCH NEXT FROM LOOP_T INTO @PART;
END;

-- 关闭游标

CLOSE LOOP_T;

-- 解除游标参照

DEALLOCATE LOOP_T;

-- 将游标内容代入最后结果(执行结果的红色部分

SELECT DATE+'会议目录:' + @ROWSPACE + @UNIONALL

END

执行结果:

-----------------------------------------------------------------------------------------------------------

2008-12-26 会议目录:

2008-12-26       会议1            10:00      ~    12:00

2008-12-26       会议2            13:00      ~    14:00

2008-12-26       会议3            14:10      ~    15:30

2008-12-26       会议4            15:40      ~    17:00

http://hi.baidu.com/mali1979/blog/item/6d74b410ffd9b2fbc2ce79b6.html


  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值