用end中断过程,行的丢失,您只有一个用于@ColumnHeader,但不用于其余行。请将HTML结果添加到您的帖子中(不仅仅是屏幕截图)@AMINCHAR HTML结果现在已添加。感谢您关注此问题。我已经添加了输出的HTML代码。 USE master
用end中断过程,行的丢失,您只有一个用于@ColumnHeader,但不用于其余行。请将HTML结果添加到您的帖子中(不仅仅是屏幕截图)@AMINCHAR HTML结果现在已添加。感谢您关注此问题。我已经添加了输出的HTML代码。 USE master ,html,sql,sql-server,stored-procedures,html-table,Html,Sql,Sql Server,Stored Procedures,Html Table,用end中断过程,行的丢失,您只有一个用于@ColumnHeader,但不用于其余行。请将HTML结果添加到您的帖子中(不仅仅是屏幕截图)@AMINCHAR HTML结果现在已添加。感谢您关注此问题。我已经添加了输出的HTML代码。 USE master GO IF EXISTS ( SELECT * FROM sys.objects WHERE objects.object_id = OBJECT_ID(
用
end
中断过程,行的
丢失,您只有一个
用于@ColumnHeader,但不用于其余行。请将HTML结果添加到您的帖子中(不仅仅是屏幕截图)@AMINCHAR HTML结果现在已添加。感谢您关注此问题。我已经添加了输出的HTML代码。
USE master
GO
IF EXISTS ( SELECT *
FROM sys.objects
WHERE objects.object_id = OBJECT_ID(
N'[dbo].[sp_GenerateHTMLTableResults]')
AND objects.type IN (N'P', N'PC'))
DROP PROCEDURE [dbo].[sp_GenerateHTMLTableResults]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS ( SELECT *
FROM sys.objects
WHERE objects.object_id = OBJECT_ID(
N'[dbo]. [sp_GenerateHTMLTableResults]')
AND objects.type IN (N'P', N'PC'))
BEGIN
EXEC sys.sp_executesql @statement = N'CREATE PROCEDURE [dbo].[sp_GenerateHTMLTableResults] AS'
END
GO
ALTER PROCEDURE [dbo].[sp_GenerateHTMLTableResults]
(
@ResultsTableName NVARCHAR(100) ,
@GeneratedHTML NVARCHAR(MAX) OUTPUT
)
AS
BEGIN
DECLARE @BaseSQL NVARCHAR(MAX)
DECLARE @SQL NVARCHAR(MAX)
DECLARE @ColumnHeader NVARCHAR(MAX) = ''
DECLARE @TableResults NVARCHAR(MAX) = ''
DECLARE @ParmDefinition NVARCHAR(MAX)
DECLARE @BodyHTML NVARCHAR(MAX)
DECLARE @TableColumns TABLE
(
ColumnName NVARCHAR(MAX)
)
SET @BaseSQL = 'SELECT TN.N.value(''local-name(.)'', ''sysname'') AS ColumnName FROM (SELECT TV.* FROM ( SELECT 1 ) AS D(N) OUTER APPLY (SELECT TOP ( 0 ) * FROM '
+ @ResultsTableName
+ ' ) AS TV FOR XML PATH(''''), ELEMENTS XSINIL, TYPE ) AS TX(X) CROSS APPLY TX.X.nodes(''*'') AS TN(N)'
INSERT INTO @TableColumns ( ColumnName )
EXECUTE sys.sp_executesql @BaseSQL
SET @SQL = ' SELECT @Columns = isnull(@Columns,'''') + ''<th>'' +ColumnName + ''</th>'' FROM ('
+ @BaseSQL + ') a'
SET @ParmDefinition = N'@Columns nvarchar(max) OUTPUT';
EXECUTE sys.sp_executesql @SQL ,
@ParmDefinition ,
@Columns = @ColumnHeader OUTPUT;
SET @ColumnHeader = '<table cellpadding="2" cellspacing="2" border="1" style="font-family: Arial; font-size: 8pt"><TR>'
+ @ColumnHeader + '</TR>'
SET @SQL = 'SELECT @BodyHTML = CAST((SELECT td = '
SELECT @SQL = @SQL + 'CAST(' + tc.ColumnName + ' as nvarchar(max)) '
+ '+''</td><td>''+'
FROM @TableColumns AS tc
SET @SQL = LEFT(@SQL, LEN(@SQL) - 13) + ' FROM ( SELECT * FROM '
+ @ResultsTableName
+ ' ) AS d FOR XML PATH(''tr''), TYPE ) AS VARCHAR(MAX))'
SET @ParmDefinition = N'@BodyHTML nvarchar(max) OUTPUT';
EXECUTE sys.sp_executesql @SQL ,
@ParmDefinition ,
@BodyHTML = @BodyHTML OUTPUT;
SET @GeneratedHTML = @ColumnHeader
+ REPLACE(
REPLACE(@BodyHTML, '<', '<') ,
'>' ,
'>') + '<table>'
END
GO
EXEC sys.sp_MS_marksystemobject sp_GenerateHTMLTableResults
GO
<table class=MsoNormalTable border=1 cellpadding=0 style='mso-cellspacing:1.2pt;
mso-yfti-tbllook:1184;mso-padding-alt:1.2pt 1.2pt 1.2pt 1.2pt'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>StayYear<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Market<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Jan<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Feb<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Mar<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Apr<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>May<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Jun<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Jul<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Aug<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Sep<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Oct<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Nov<o:p></o:p></span></b></p>
</td>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal align=center style='text-align:center'><b><span
style='font-size:8.0pt;font-family:"Arial",sans-serif'>Dec<o:p></o:p></span></b></p>
</td>
</tr>
<tr style='mso-yfti-irow:1'>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Arial",sans-serif'>2017</td><td>France</td><td>340</td><td>470</td><td>390</td><td>293</td><td>188</td><td>38</td><td>62</td><td>71</td><td>39</td><td>15</td><td>77</td><td>17<o:p></o:p></span></p>
</td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
</tr>
<tr style='mso-yfti-irow:2'>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Arial",sans-serif'>2018</td><td>France</td><td>534</td><td>558</td><td>420</td><td>608</td><td>413</td><td>72</td><td>71</td><td>238</td><td>48</td><td>110</td><td>44</td><td>76<o:p></o:p></span></p>
</td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
</tr>
<tr style='mso-yfti-irow:3'>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Arial",sans-serif'>2017</td><td>United
Kingdom</td><td>1298</td><td>910</td><td>1289</td><td>1720</td><td>1165</td><td>1112</td><td>793</td><td>1045</td><td>1419</td><td>862</td><td>752</td><td>226<o:p></o:p></span></p>
</td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'></td>
</tr>
<tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Arial",sans-serif'>2018</td><td>United
Kingdom</td><td>874</td><td>777</td><td>1389</td><td>1896</td><td>1229</td><td>916</td><td>886</td><td>1225</td><td>1360</td><td>961</td><td>770</td><td>328<o:p></o:p></span></p>
</td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<table class=MsoNormalTable border=0 cellspacing=3 cellpadding=0
style='mso-cellspacing:1.5pt;mso-yfti-tbllook:1184'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td style='padding:.75pt .75pt .75pt .75pt'></td>
</tr>
</table>
<td style='padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<p class=MsoNormal><span style='font-size:8.0pt;font-family:"Arial",sans-serif'>2017</td><td>France</td><td>340</td><td>470</td><td>390</td><td>293</td><td>188</td><td>38</td><td>62</td><td>71</td><td>39</td><td>15</td><td>77</td><td>17<o:p></o:p></span></p>
</td>
Kingdom</td><td>874</td><td>777</td><td>1389</td><td>1896</td><td>1229</td><td>916</td><td>886</td><td>1225</td><td>1360</td><td>961</td><td>770</td><td>328<o:p></o:p></span></p>
</td>
<td style='border:none;padding:1.2pt 1.2pt 1.2pt 1.2pt'>
<table class=MsoNormalTable border=0 cellspacing=3 cellpadding=0
style='mso-cellspacing:1.5pt;mso-yfti-tbllook:1184'>
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
<td style='padding:.75pt .75pt .75pt .75pt'></td>
</tr>
</table>