SQL Server静态页面导出技术4

server|静态|页面

本段文章节选自铁道出版社新出的《用BackOffice建立Intranet/Extranet应用》一书(现已在海淀图书城有售)。本书详尽地讲述了如何使用微软BackOffice系列产品来组建Intranet/Extranet应用。通过它您将掌握NT的安装和设置、使用IIS建立Web站点、通过ILS建立网络会议系统、用Exchange建立企业的邮件和协作系统、用SQL Server建立Web数据库应用、用Proxy Server建立同Internet安全可靠的连接、用Media Server建立网络电视台/广播站、用Chart server建立功能强大的聊天室、用Site Server建立个性化的邮件列表和分析网站的访问情况、用Commerce Server建立B2B或B2C的电子商务网站。此外本书还对网络的安全性进行了讨论,从而指导您建立一个更为健壮和安全的网络应用。阅读本书之后,您将发现实现丰富多彩的网络应用原来这样简单……
绝对原创,欢迎转载。但请务必保留以上文字。

use test
go
declare
    @riqi  varchar(20),
    @filepath  varchar(255),
    @listfile  varchar(255),
    @command varchar(255)
set @riqi=left(convert(varchar(40),getdate(),20),10)
set @filepath='d:\webout\'+@riqi+'\'
set @command='md '+@filepath
execute master.dbo.Xp_cmdshell @command
set @command='md '+@filepath+'images'
execute master.dbo.Xp_cmdshell @command
set @command ='copy d:\test\files\*.* d:\webout\'+@riqi+'\'
execute master.dbo.Xp_cmdshell @command
set @command ='copy d:\test\files\images\*.* d:\webout\'+@riqi+'\images\'
execute master.dbo.Xp_cmdshell @command
set @command ='copy d:\test\'+@riqi+'\*.* d:\webout\'+@riqi+'\'
execute master.dbo.Xp_cmdshell @command
set @listfile=@filepath+'list.htm'
execute sp_makewebtask
@outputfile=@listfile,
@query='select distinct banmian
from gaojian
where kanwu=''出版报'' and datepart(yy,riqi)=datepart(yy,getdate()) and datepart(dy,riqi)=datepart(dy,getdate())',
@templatefile='d:\test\list.tml',
@codepage=936
    在此段代码中先定义了一些变量,用来调用存贮过程时使用。其中@riqi变量用于存放当日的日期(其格式为yyy-mm-dd);@filepath变量用于存放产生静态页面的路径;@listfile变量用于存放版面列表页面文件的路径和文件名;@command变量用于存放要执行的系统命令。
    随后我们对各个变量进行赋值。并调用xp_cmdshell存贮过程来完成建立相应目录、拷贝文件等工作。xp_cmdshell存贮过程是一个用来执行NT系统命令的扩展存贮过程。其语法结构如下:
    xp_cmdshell {'command_string'} [, no_output]
    其中command_string参数为要执行的系统命令。而选项no_output则用来指明不输出系统命令的执行结果。
    在此段代码的最后,执行未指明whentype参数的sp_makewebtask存贮过程,导出当日的版面列表页面文件。使用的模板文件为list.tml。list.tml文件的代码如下:
<html>
<head><title>出版报</title></head>
<body BACKGROUND="images/WB00703_.gif">
<script>
var t=0;
</script>
<table BORDER="0" ALIGN="CENTER">
<%begindetail%>
<tr>
<td><img SRC="http://edu.cnzz.cn/NewsInfo/images/Yellowb2.gif" WIDTH="14" HEIGHT="14">
<script>
var t=t+1;
document.write('<a HREF="');
document.write(t);
document.write('.htm" TARGET="show"><b><i><font SIZE="+1">')
</script>
<%insert_data_here%></font></i></b></a></td></tr>
<%enddetail%>
</table></body></html>
    可以看到,静态页面导出使用的模板文件同IDC技术中使用的htx文件十分相似。其中也包含<%begindetail%>和<%enddetail%>字段。所不同的是,模板文件中不使用<%字段名%>来标识字段。只是简单的使用<%insert_data_here%>来指明在何处插入结果集中的数据。如果结果集记录中包含多个字段的话,<%insert_data_here%>将按照其在记录中的顺序(即按照SELECT语句中的字段顺序)来顺序地插入数据。也就是说,每个结果记录中的每个字段只能在页面中被插入一次。如果要想在页面中多次使用某个字段,可以先将它赋给一个变量。然后再反复地使用此变量即可。
    在此模板文件中有一段Java程序,其用途是为每个版面按照其顺序产生超链接。其链接分别为1.htm~n.htm,n值为当日版面的数目。
    至此我们已经成功地建立了存放页面文件的目录、完成了相应文件的拷贝工作、导出了当日版面的列表文件。下面将为每个版面来产生文章列表页面文件。
declare
@lists int,
@banmian varchar(64),
    @filename varchar(64),
    @search varchar(2000)
set @lists=0
declare point cursor for
select distinct banmian
from gaojian
where kanwu='出版报' and datepart(yy,riqi)=datepart(yy,getdate()) and datepart(dy,riqi)=datepart(dy,getdate())
for read only

open point
fetch point into
  @banmian
while (@@fetch_status=0)
begin
set @lists=@lists+1
set @filename=@filepath+convert(varchar(64),@lists)+'.htm'
set @search='SELECT id,timu,laiyuan
FROM gaojian
WHERE datepart(yy,riqi)=datepart(yy,convert(datetime,'''+@riqi+'''))
and datepart(dy,riqi)=datepart(dy,convert(datetime,'''+@riqi+'''))'+
'and banmian ='''+@banmian+'''and kanwu=''出版报''order by timu'
execute sp_makewebtask
@outputfile=@filename,
@query=@search,
@templatefile='d:\test\list2.tml',
@codepage=936
fetch point into
@banmian
end
close point
deallocate point
    在此段代码中我们使用了游标。在此之前我们所使用的SQL语句都是用于集合操作的。也就是说,语句只是用来产生结果集合,或对结果集合进行分组。而要想分别对每个返回的结果记录进行不同的处理,就只有通过游标来实现了。

时间: 2024-11-08 23:23:15

SQL Server静态页面导出技术4的相关文章

SQL Server静态页面导出技术1

server|静态|页面 本段文章节选自铁道出版社新出的<用BackOffice建立Intranet/Extranet应用>一书(现已在海淀图书城有售).本书详尽地讲述了如何使用微软BackOffice系列产品来组建Intranet/Extranet应用.通过它您将掌握NT的安装和设置.使用IIS建立Web站点.通过ILS建立网络会议系统.用Exchange建立企业的邮件和协作系统.用SQL Server建立Web数据库应用.用Proxy Server建立同Internet安全可靠的连接.用M

SQL Server静态页面导出技术2

server|静态|页面 本段文章节选自铁道出版社新出的<用BackOffice建立Intranet/Extranet应用>一书(现已在海淀图书城有售).本书详尽地讲述了如何使用微软BackOffice系列产品来组建Intranet/Extranet应用.通过它您将掌握NT的安装和设置.使用IIS建立Web站点.通过ILS建立网络会议系统.用Exchange建立企业的邮件和协作系统.用SQL Server建立Web数据库应用.用Proxy Server建立同Internet安全可靠的连接.用M

SQL Server静态页面导出技术(SQL Server Web Assistant)

server|web|静态|页面 本段文章节选自铁道出版社新出的<用BackOffice建立Intranet/Extranet应用>一书(现已在海淀图书城有售,外地或者需要送货上门的读者可以到www.wanbook.com.cn或www.e-bookshop.com.cn上在线购买.本书书号为ISBN7113039448).本书详尽地讲述了如何使用微软BackOffice系列产品来组建Intranet/Extranet应用.通过它您将掌握NT的安装和设置.使用IIS建立Web站点.通过ILS建

SQL Server静态页面导出技术(SQL Server Web Assistant)6

server|web|静态|页面 本段文章节选自铁道出版社新出的<用BackOffice建立Intranet/Extranet应用>一书(现已在海淀图书城有售,外地或者需要送货上门的读者可以到www.wanbook.com.cn或www.e-bookshop.com.cn上在线购买.本书书号为ISBN7113039448).本书详尽地讲述了如何使用微软BackOffice系列产品来组建Intranet/Extranet应用.通过它您将掌握NT的安装和设置.使用IIS建立Web站点.通过ILS建

SQL Server静态页面导出技术3

server|静态|页面 BORDER="BORDER" ALIGN="CENTER"><th><tr><h2>'+convert(varchar(4),@year)+'年'+@yue+'月份</h2></tr></th><tr><td>星期日</td><td>星期一</td><td>星期二</td><

SQL Server数据导入导出技术概述与比较

当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理. 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理:调用命令行工具bcp处理数据:使用数据转换服务(DTS)对数据进行处理.这三种方法各有其特点,下面就它们的主要特点进行比较. 一.使用方式的比

SQL Server 2016 列存储技术做实时分析

title: SQL Server 2016 列存储技术做实时分析 author: 风移 摘要 数据分析指导商业行为的价值越来越高,使得用户对数据实时分析的要求变得越来越高.使用传统RDBMS数据分析架构,遇到了前所未有的挑战,高延迟.数据处理流程复杂和成本过高.这篇文章讨论如何利用SQL Server 2016列存储技术做实时数据分析,解决传统分析方法的痛点. 传统RDBMS数据分析 在过去很长一段时间,企业均选择传统的关系型数据库做OLAP和Data Warehouse工作.这一节讨论传统R

SQL Server各种导入导出数据方式的比较

本文为原创,如需转载,请注明作者和出处,谢谢!本文曾发表于IT168:http://tech.it168.com/db/s/2006-08-02/200608020911005.shtml     当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理.     在SQL Server中主要有三

从SQL Server中导入/导出 Excel 的基本方法

excel|server 从SQL Server中导入/导出 Excel 的基本方法 /*===================  导入/导出 Excel 的基本方法 ===================*/ 从Excel文件中,导入数据到SQL数据库中,很简单,直接用下面的语句: /*===================================================================*/--如果接受数据导入的表已经存在insert into 表 select