Temp-tabell till HTML-tabell
Procedur som tar en temptabell och producerar en html-sträng med motsvarande tabell med innehåll.
CREATE PROCEDURE dbo.TemptabellTillHtmlTabell
@Tabellnamn varchar(MAX),
@HtmlTable varchar(MAX) OUTPUT
AS
BEGIN
DECLARE
@Sql nvarchar(MAX),
@HtmlHead varchar(MAX),
@HtmlRowSql varchar(MAX),
@ColumnIds varchar(MAX);
WITH Col AS (
SELECT
C.column_id AS [ColumnId],
C.name AS [ColumnName]
FROM
tempdb.sys.tables T
JOIN tempdb.sys.columns C ON
C.object_id = T.object_id
WHERE
T.name LIKE CONCAT('#', REPLACE(@Tabellnamn, '#', ''), '%')
)
SELECT
@ColumnIds =
STUFF(
((
SELECT CONCAT(', ', C.ColumnId)
FROM Col C
ORDER BY C.ColumnId
FOR XML PATH(''), TYPE).value('.', 'varchar(max)')
),
1,
2,
''
),
@HtmlHead =
((
SELECT CONCAT('<th>', C.ColumnName, '</th>')
FROM Col C
ORDER BY C.ColumnId
FOR XML PATH(''), TYPE).value('.', 'varchar(max)')
),
@HtmlRowSql =
CONCAT(
'CONCAT(',
'''<tr>'', ',
((
SELECT CONCAT('''<td>'', T.', C.ColumnName, ', ''</td>'', ')
FROM Col C
ORDER BY C.ColumnId
FOR XML PATH(''), TYPE).value('.', 'varchar(max)')
),
'''</tr>''',
')'
);
SELECT
@Sql = CONCAT(N'
SELECT
@HtmlTable =
CONCAT(
''<table>'',
''<thead>'',
''<tr>',
@HtmlHead,
'</tr>'',
''</thead>'',
''<tbody>'',
((
SELECT
', @HtmlRowSql, '
FROM
', CONCAT('#', REPLACE(@Tabellnamn, '#', '')), ' T
ORDER BY
', @ColumnIds, '
FOR XML PATH(''''), TYPE).value(''.'', ''varchar(max)'')
),
''</tbody>'',
''</table>''
);');
EXEC sys.sp_executesql
@stmt = @Sql,
@Params = N'@HtmlTable varchar(max) output',
@HtmlTable = @HtmlTable OUTPUT;
END
GO