把sql sever 查询结果 转成 html table


-------------------------------------------把查询放入临时表---测试用例--

declare @temptablename varchar(100)
select @temptablename='tempdb..##'+convert(varchar,convert(int, rand()*1000000))   ---防止全局临时表冲突.用rand区别
--select @temptablename
declare @sql varchar(max)
set @sql='select * into '+@temptablename+' from mmWeaveModel '
exec( @sql)


--导出数据为字符串HTML格式.
declare @html varchar(max)

exec pubdb..p_ExportHtmlFromTempobj @temptablename,'hell',@html output,'该邮件由系统自动发送,请不要直接回复'
print @html

 
 set @sql='drop table '+@temptablename
 exec( @sql)
 
 


-------------------------查询结果 转成 html table-------------------------------------




alter PROC [dbo].[p_ExportHtmlFromTempobj]
    @object_name sysname, --表名或视图名
    @title nvarchar(1000) = NULL, -- html 标题, 为NULL时使用@object_name
    @Html nvarchar(max) output,
    @Note varchar(300)=''
AS
set nocount on
---把表里的内容转成html 格式输出.
---lichengyi2015-11-05
declare @tablename varchar(20)
set @tablename=replace(@object_name,'tempdb..','')
--取字段信息
declare @fields table (fieldname varchar(50))
insert into @fields    select  c.name                                             
            FROM tempdb.sys.all_columns C
            INNER JOIN tempdb.sys.types T
             ON T.system_type_id = C.system_type_id
            AND T.system_type_id = T.user_type_id
             WHERE  C.object_id = OBJECT_ID(@object_name)   order by column_id
    
    
--生成标题.        
declare @tableTitle varchar(max)
set @tableTitle=''
     SET @tableTitle = @tableTitle +
 +cast((select (select [*]= fieldname    from    @fields     FOR XML PATH('th'), TYPE )  for xml path('TR'),type) as nvarchar(max))
    
    --查询字段
 declare @fieldslistsql varchar(max)
 set @fieldslistsql=''
 SET @fieldslistsql = @fieldslistsql +cast((select (select [*]= isnull(fieldname,'')+' as td,'''','    from    @fields     FOR XML PATH(''), TYPE )  for xml path(''),type) as

  SET @fieldslistsql = @fieldslistsql +cast((select (select [*]=+'isnull('+fieldname+','''') as td,'''','    from    @fields     FOR XML PATH(''), TYPE )  for xml path(''),type) as

nvarchar(max))+''''''
 
  ----生成内容.
 declare @tdsql nvarchar(max),@TD nvarchar(max)
 set @tdsql= +N' select   @tdHTML=cast(( select '+@fieldslistsql +N' from '+@tablename+N'   FOR XML PATH(''tr''), TYPE ) AS NVARCHAR(MAX) )'
 
exec sp_executesql @tdsql,N'@tdHTML nvarchar(max) output',@TD output

   SET @Html = '<html><meta http-equiv="Content-Type" content="text/html; charset=gb2312">' +char(13)+char(10)+'
               <style type=''text/css''>
               table{border-collapse:collapse;border-spacing:0;border-left:1px solid #888;border-top:1px solid #888;background:#ffefef; font-size: 12px}
                th,td{border-right:1px solid #888;border-bottom:1px solid #888;padding:5px 15px;}
                th{font-weight:bold;background:#ccc;}              
               .header {text-align:center;font-weight:bold;white-space:nowrap;color:#7f7e82;}
                .cell_text {vertical-align:top;text-align:left;color:#333333;}
                .cell_num {vertical-align:top;text-align:right;color:#333333;}</style>' +char(13)+char(10)+
                '<body>'+char(13)+char(10)+ N'<H1>'+@title+'</H1>' +   N'<table border="1">' +@tableTitle+char(13)+char(10)+
                @TD+ '</body></html>'
return;
        
            
            
            
           


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leecyi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值