SQL Server

Generování dat do HTML pomocí T-SQL

V praxi se čas od času objeví požadavek, vygenerovat pomocí T-SQL jazyka výstupní data přímo ve formátu HTML, např. pro export do webové aplikace. Náramně užitečné to může být i v případě, pokud si necháváme přímo z SQL Serveru posílat různé emailové notifikace a rádi bychom je doplnili daty tak, že je emailový klient bude přímo zobrazovat v uživatelsky přívětivém formátu, v tomto případě v tabulce.

V následujícím skriptu si vše ukážeme na ukázkových datech, kterými bude seznam prvních 10ti tabulek z databáze msdb. Data si jednoduše vložíme do kurzoru a při každé jeho iteraci bude postupně přidávat jednotlivé tagy k proměnné @HTML:

USE msdb
GO

DECLARE @name NVARCHAR(128)
DECLARE @HTML NVARCHAR(MAX)
DECLARE @tr NVARCHAR(20)
DECLARE @_tr NVARCHAR(20)
DECLARE @td NVARCHAR(20)
DECLARE @_td NVARCHAR(20)

SET @tr = '   <tr>';
    SET @td = '      <td>'
    SET @_td = '</td>'
SET @_tr = '   </tr>';

SET @HTML = '<table border = 1>' + CHAR(13)

DECLARE cur CURSOR FAST_FORWARD FOR
    SELECT TOP 10 name
    FROM sys.tables
    ORDER BY name

OPEN cur
FETCH NEXT FROM cur INTO @name
WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @HTML = @HTML + @tr + CHAR(13) + 
                    @td + ISNULL(@name, 'NULL') + @_td + CHAR(13) +
                    @_tr + CHAR(13)                            
    
        FETCH NEXT FROM cur INTO @name
    END
CLOSE cur
DEALLOCATE cur

SET @HTML = SUBSTRING(@HTML, 0, LEN(@HTML) - 1) + '>' + CHAR(13) + '</table>'

PRINT @HTML
GO

Výstup v Management Studiu vypadá takto:

Pokud si data zkopírujeme a uložíme je do souboru v příponou *.html, v prohlížeči uvidíme tuto jednoduchou tabulku (a stejně tak v emailovém klientu, který podporuje zobrazení HTML):

 

Leave a Reply

Your email address will not be published. Required fields are marked *