SQL Server静态页面导出技术4
SQL Server静态页面导出技术4,SQL Server静态页面导出技术4
绝对原创,欢迎转载。但请务必保留以上文字。
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:testfiles*.* d:webout'+@riqi+''
execute master.dbo.Xp_cmdshell @command
set @command ='copy d:testfilesimages*.* 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:testlist.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://img.jcwcn.com/attachment/portal/jcwcj/2005-12/10/0512101120063651.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语句中的字段顺序)来顺序地插入数据。也就是说,每个结果记录中的每个字段只能在页面中被插入一次。如果要想在页面中多次使用某个字段,可以先将它赋给一个变量。然后