使用目的,利用以时间等条件参照其他表格,将会议目录抽取出来(游标的执行结果),然后以添加其他的文字形式对
结果进行修饰,由于最终目的是将会议目录以邮件的形势发布出去,所以单一的数据行查询的话,无法满足我想要得
集合结果(根据数据库设计方式不同),所以利用触发器来接受由外部发来的参数,然后利用游标将参数为条件提取数
据集,就是这样。
触发器游标部分的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
本文介绍了如何通过触发器和游标从数据库中抽取特定条件下的会议目录,并对其进行修饰,最终以邮件的形式发布。重点在于使用SQL语句实现复杂的数据筛选和格式化操作。

129

被折叠的 条评论
为什么被折叠?



