SQL Server’da Tabloların HTML Formatta Çıktısını Alan Prosedür
Herkese merhaba,
Bu yazıda SQL Server’da tabloların HTML formatta çıktısını alan prosedür ile ilgili bilgi paylaşacağım
SQL Server’da bazı durumlarda tabloların HTML formatta çıktısını almak isteyebilirsiniz.
Aşağıdaki prosedürü kullanarak sizler de bu işlemi rahatlıkla yapabilirsiniz.
CREATE PROCEDURE [dbo].[SqlTableToHtml] (@TABLENAME NVARCHAR(500),
@OUTPUT NVARCHAR(MAX) OUTPUT,
@TBL_STYLE NVARCHAR(1024) = '',
@TD_STYLE NVARCHAR(1024) = '',
@HDR_STYLE NVARCHAR(1024) = '')
AS
DECLARE @exec_str NVARCHAR(MAX)
DECLARE @ParmDefinition NVARCHAR(500)
SET @exec_str = N'
DECLARE @exec_str NVARCHAR(MAX)
DECLARE @ParmDefinition NVARCHAR(500)
select CustColHTML_ID=0,* INTO #CustomTable2HTML FROM ' + @TABLENAME + '
DECLARE @COUNTER INT
SET @COUNTER=0
UPDATE #CustomTable2HTML SET @COUNTER = CustColHTML_ID=@COUNTER+1
DECLARE @HTMLROWS NVARCHAR(MAX) DECLARE @FIELDS NVARCHAR(MAX)
SET @HTMLROWS='''' DECLARE @ROW NVARCHAR(MAX)
SET @FIELDS=''<tr>''
SELECT @FIELDS=COALESCE(@FIELDS, '' '','''')+''<th ' + @HDR_STYLE + '>'' + name + ''</th>''
FROM tempdb.sys.Columns
WHERE object_id=object_id(''tempdb..#CustomTable2HTML'')
AND name not like ''CustColHTML_ID''
SET @FIELDS=@FIELDS + ''</tr>''
DECLARE @ColumnName NVARCHAR(500)
DECLARE @maxrows INT
DECLARE @rownum INT
SELECT @maxrows=count(*) FROM #CustomTable2HTML
DECLARE col CURSOR FOR
SELECT name FROM tempdb.sys.Columns
WHERE object_id=object_id(''tempdb..#CustomTable2HTML'')
AND name not like ''CustColHTML_ID''
ORDER BY column_id ASC
SET @rowNum=0
SET @ParmDefinition=N''@ROWOUT NVARCHAR(MAX) OUTPUT,@rowNum_IN INT''
While @rowNum < @maxrows
BEGIN
SET @HTMLROWS=@HTMLROWS + ''<tr>''
SET @rowNum=@rowNum +1
OPEN col
FETCH NEXT FROM col INTO @ColumnName
WHILE @@FETCH_STATUS=0
BEGIN
SET @exec_str=''SELECT @ROWOUT=(select COALESCE(['' + @ColumnName + ''], '''''''') AS ['' + @ColumnName + ''] from #CustomTable2HTML where CustColHTML_ID=@rowNum_IN)''
EXEC sp_executesql
@exec_str,
@ParmDefinition,
@ROWOUT=@ROW OUTPUT,
@rowNum_IN=@rownum
SET @HTMLROWS =@HTMLROWS + ''<td ' + @TD_STYLE + '>'' + @ROW + ''</td>''
FETCH NEXT FROM col INTO @ColumnName
END
CLOSE col
SET @HTMLROWS=@HTMLROWS + ''</tr>''
END
SET @OUTPUT=''''
IF @maxrows>0
SET @OUTPUT= ''<table ' + @TBL_STYLE + '>'' + @FIELDS + @HTMLROWS + ''</table>''
DEALLOCATE col
'
DECLARE @ParamDefinition NVARCHAR(MAX)
SET @ParamDefinition = N'@OUTPUT NVARCHAR(MAX) OUTPUT'
EXEC sp_executesql @exec_str
,@ParamDefinition
,@OUTPUT = @OUTPUT OUTPUT
RETURN 1
--Kullanımı
DECLARE @html NVARCHAR(MAX)
EXEC SqlTableToHtml 'Products'
,@html OUTPUT
,''
,'style="border-top:1px #CCCCCC solid;padding:7px"'
,'style="padding:7px"'
SELECT
@html
Yukarıdaki prosedürü oluşturup çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.
Yukarıdaki prosedürü Northwind veritabanı üzerinde Products tablosu üzerinde deneyerek sonucu elde ettim. Sizler kendi tablolarınızda da deneyebilirsiniz.
Görüldüğü üzere tablonun HTML formatta çıktısını almış olduk.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.