tsql – SQL Server PRINT SELECT (Imprimer un résultat de requête select)? – Bien choisir son serveur d impression
Author: Titanfall —
Short summary: J'ai écrit ce SP pour faire exactement ce que vous voulez, cependant, vous devez utiliser SQL dynamique. Cela a fonctionné pour moi sur SQL Server 2008 R2 Procédure ALTER [dbo].[PrintSQLResults] @query nvarchar (MAX), @numberToDisplay int = 10, @padding int = 20 comme SET NOCOUNT ON; SET ANSI_WARNINGS ON; declare @cols nvarchar (MAX), @displayCols nvarchar (MAX), […]
Quick overview
- Site
- Tutos GameServer
- Canonical URL
- https://tutos-gameserver.fr/2019/05/02/tsql-sql-server-print-select-imprimer-un-resultat-de-requete-select-bien-choisir-son-serveur-d-impression/
- LLM HTML version
- https://tutos-gameserver.fr/2019/05/02/tsql-sql-server-print-select-imprimer-un-resultat-de-requete-select-bien-choisir-son-serveur-d-impression/llm
- LLM JSON version
- https://tutos-gameserver.fr/2019/05/02/tsql-sql-server-print-select-imprimer-un-resultat-de-requete-select-bien-choisir-son-serveur-d-impression/llm.json
- Manifest
- https://tutos-gameserver.fr/llm-endpoints-manifest.json
- Estimated reading time
- 5 minutes (256 seconds)
- Word count
- 851
Key points
- J'ai écrit ce SP pour faire exactement ce que vous voulez, cependant, vous devez utiliser SQL dynamique.
- Cela a fonctionné pour moi sur SQL Server 2008 R2 Procédure ALTER [dbo].[PrintSQLResults] @query nvarchar (MAX), @numberToDisplay int = 10, @padding int = 20 comme SET NOCOUNT ON; SET ANSI_WARNINGS ON; declare @cols nvarchar (MAX), @displayCols nvarchar (MAX), @sql nvarchar (MAX), @printableResults nvarchar (MAX), @NewLineChar AS char (2) = char (13) + char (10), @Tab AS char (9) = char (9); si existe (sélectionnez * depuis tempdb.sys.tables où name = '## PrintSQLResultsTempTable') table de suppression ## PrintSQLResultsTempTable set @query = REPLACE (@query, 'de', 'dans ## PrintSQLResultsTempTable de'); --print @query exec (@query); sélectionnez ROW_NUMBER () OVER (ORDER BY (sélectionnez Null)) AS ID12345XYZ, * dans #PrintSQLResultsTempTable à partir de ## PrintSQLResultsTempTable déposer la table ## PrintSQLResultsTempTable sélectionnez le nom dans #PrintSQLResultsTempTableColumns à partir de tempdb.sys.columns où object_id = object_id ('tempdb ..
- # PrintSQLResultsTempTable'); sélectionnez @cols = des trucs(( (sélectionnez '+ espace (1) + (GAUCHE ((CAST ([' + name + '] comme nvarchar (max)) + espace ('+ CAST (@padding comme nvarchar (4)) +')), '+ CAST (@padding comme nvarchar (4)) +')) comme [text()] FROM #PrintSQLResultsTempTableColumns où nom!
- = 'ID12345XYZ' FOR XML PATH (''), racine ('str'), type) .value ('/ str[1]',' nvarchar (max) ')) , 1,0, '' '' '); sélectionnez @displayCols = des trucs(( (sélectionnez espace (1) + LEFT (nom + espace (@padding), @padding) comme [text()] FROM #PrintSQLResultsTempTableColumns où nom!
Primary visual
Structured content
J'ai écrit ce SP pour faire exactement ce que vous voulez, cependant, vous devez utiliser SQL dynamique. Cela a fonctionné pour moi sur SQL Server 2008 R2 Procédure ALTER [dbo].[PrintSQLResults] @query nvarchar (MAX), @numberToDisplay int = 10, @padding int = 20 comme
SET NOCOUNT ON; SET ANSI_WARNINGS ON;
declare @cols nvarchar (MAX), @displayCols nvarchar (MAX), @sql nvarchar (MAX), @printableResults nvarchar (MAX), @NewLineChar AS char (2) = char (13) + char (10), @Tab AS char (9) = char (9);
si existe (sélectionnez * depuis tempdb.sys.tables où name = '## PrintSQLResultsTempTable') table de suppression ## PrintSQLResultsTempTable
set @query = REPLACE (@query, 'de', 'dans ## PrintSQLResultsTempTable de'); --print @query exec (@query); sélectionnez ROW_NUMBER () OVER (ORDER BY (sélectionnez Null)) AS ID12345XYZ, * dans #PrintSQLResultsTempTable à partir de ## PrintSQLResultsTempTable déposer la table ## PrintSQLResultsTempTable
sélectionnez le nom dans #PrintSQLResultsTempTableColumns à partir de tempdb.sys.columns où object_id = object_id ('tempdb .. # PrintSQLResultsTempTable');
sélectionnez @cols = des trucs(( (sélectionnez '+ espace (1) + (GAUCHE ((CAST ([' + name + '] comme nvarchar (max)) + espace ('+ CAST (@padding comme nvarchar (4)) +')), '+ CAST (@padding comme nvarchar (4)) +')) comme [text()] FROM #PrintSQLResultsTempTableColumns où nom! = 'ID12345XYZ' FOR XML PATH (''), racine ('str'), type) .value ('/ str[1]',' nvarchar (max) ')) , 1,0, '' '' ');
sélectionnez @displayCols = des trucs(( (sélectionnez espace (1) + LEFT (nom + espace (@padding), @padding) comme [text()] FROM #PrintSQLResultsTempTableColumns où nom! = 'ID12345XYZ' FOR XML PATH (''), racine ('str'), type) .value ('/ str[1]',' nvarchar (max) ')) , 1,0, '');
DÉCLARER @tableCount int = (select count (*) from #PrintSQLResultsTempTable); DÉCLARER @ i int = 1, @ii int = cas où @tableCount <@numberToDisplay puis @tableCount else @numberToDisplay end;
print @displayCols - en-tête Alors que @i <= @ii COMMENCER set @sql = N'select @printableResults = '+ @cols +' + @NewLineChar à partir de #PrintSQLResultsTempTable où ID12345XYZ = '+ CAST (@i comme varchar (3)) +'; print @printableResults; ' --print @sql exécuter sp_executesql @sql, N '@ NewLineChar char (2), @printableResults nvarchar (max) sortie', @NewLineChar = @NewLineChar, @printableResults = @printableResults sortie print @printableResults SET @ i + = 1; FIN
Cela a fonctionné pour moi sur SQL Server 2012 Procédure ALTER [dbo].[PrintSQLResults] @query nvarchar (MAX), @numberToDisplay int = 10, @padding int = 20 comme
SET NOCOUNT ON; SET ANSI_WARNINGS ON;
declare @cols nvarchar (MAX), @displayCols nvarchar (MAX), @sql nvarchar (MAX), @printableResults nvarchar (MAX), @NewLineChar AS char (2) = char (13) + char (10), @Tab AS char (9) = char (9);
si existe (sélectionnez * depuis tempdb.sys.tables où name = '## PrintSQLResultsTempTable') table de suppression ## PrintSQLResultsTempTable
set @query = REPLACE (@query, 'de', 'dans ## PrintSQLResultsTempTable de'); --print @query exec (@query); sélectionnez ROW_NUMBER () OVER (ORDER BY (sélectionnez Null)) AS ID12345XYZ, * dans #PrintSQLResultsTempTable à partir de ## PrintSQLResultsTempTable déposer la table ## PrintSQLResultsTempTable
sélectionnez le nom dans #PrintSQLResultsTempTableColumns à partir de tempdb.sys.columns où object_id = object_id ('tempdb .. # PrintSQLResultsTempTable');
sélectionnez @cols = des trucs(( (sélectionnez '+ espace (1) + GAUCHE (CAST ([' + name + '] as nvarchar ('+ CAST (@padding as nvarchar (4)) +)) + espace (' + CAST (@padding as nvarchar (4)) + '),' + CAST (@padding as nvarchar (4)) + ')' comme [text()] FROM #PrintSQLResultsTempTableColumns où nom! = 'ID12345XYZ' FOR XML PATH (''), racine ('str'), type) .value ('/ str[1]',' nvarchar (max) ')) , 1,0, '' '' ');
sélectionnez @displayCols = des trucs(( (sélectionnez espace (1) + LEFT (nom + espace (@padding), @padding) comme [text()] FROM #PrintSQLResultsTempTableColumns où nom! = 'ID12345XYZ' FOR XML PATH (''), racine ('str'), type) .value ('/ str[1]',' nvarchar (max) ')) , 1,0, '');
DÉCLARER @tableCount int = (select count (*) from #PrintSQLResultsTempTable); DÉCLARER @ i int = 1, @ii int = cas où @tableCount <@numberToDisplay puis @tableCount else @numberToDisplay end;
print @displayCols - en-tête Alors que @i <= @ii COMMENCER set @sql = N'select @printableResults = '+ @cols +' + @NewLineChar à partir de #PrintSQLResultsTempTable où ID12345XYZ = '+ CAST (@i comme varchar (3)) +' ' --print @sql exécuter sp_executesql @sql, N '@ NewLineChar char (2), @printableResults nvarchar (max) sortie', @NewLineChar = @NewLineChar, @printableResults = @printableResults sortie print @printableResults SET @ i + = 1; FIN
Cela a fonctionné pour moi sur SQL Server 2014 Procédure ALTER [dbo].[PrintSQLResults] @query nvarchar (MAX), @numberToDisplay int = 10, @padding int = 20 comme
SET NOCOUNT ON; SET ANSI_WARNINGS ON;
declare @cols nvarchar (MAX), @displayCols nvarchar (MAX), @sql nvarchar (MAX), @printableResults nvarchar (MAX), @NewLineChar AS char (2) = char (13) + char (10), @Tab AS char (9) = char (9);
si existe (sélectionnez * depuis tempdb.sys.tables où name = '## PrintSQLResultsTempTable') table de suppression ## PrintSQLResultsTempTable
set @query = REPLACE (@query, 'de', 'dans ## PrintSQLResultsTempTable de'); --print @query exec (@query); sélectionnez ROW_NUMBER () OVER (ORDER BY (sélectionnez Null)) AS ID12345XYZ, * dans #PrintSQLResultsTempTable à partir de ## PrintSQLResultsTempTable déposer la table ## PrintSQLResultsTempTable
sélectionnez le nom dans #PrintSQLResultsTempTableColumns à partir de tempdb.sys.columns où object_id = object_id ('tempdb .. # PrintSQLResultsTempTable');
sélectionnez @cols = des trucs(( (sélectionnez ', espace (1) + LEFT (CAST ([' + name + '] as nvarchar ('+ CAST (@padding as nvarchar (4)) +)) + espace (' + CAST (@padding as nvarchar (4)) + '),' + CAST (@padding as nvarchar (4)) + ')' comme [text()] FROM #PrintSQLResultsTempTableColumns où nom! = 'ID12345XYZ' FOR XML PATH (''), racine ('str'), type) .value ('/ str[1]',' nvarchar (max) ')) , 1,0, '' '' ');
sélectionnez @displayCols = des trucs(( (sélectionnez espace (1) + LEFT (nom + espace (@padding), @padding) comme [text()] FROM #PrintSQLResultsTempTableColumns où nom! = 'ID12345XYZ' FOR XML PATH (''), racine ('str'), type) .value ('/ str[1]',' nvarchar (max) ')) , 1,0, '');
DÉCLARER @tableCount int = (select count (*) from #PrintSQLResultsTempTable); DÉCLARER @ i int = 1, @ii int = cas où @tableCount <@numberToDisplay puis @tableCount else @numberToDisplay end;
print @displayCols - en-tête Alors que @i <= @ii COMMENCER set @sql = N'select @printableResults = concat (@printableResults, '+ @cols +', @NewLineChar) à partir de #PrintSQLResultsTempTable où ID12345XYZ = '+ CAST (@i as varchar (3)) --print @sql exécuter sp_executesql @sql, N '@ NewLineChar char (2), @printableResults nvarchar (max) sortie', @NewLineChar = @NewLineChar, @printableResults = @printableResults sortie print @printableResults SET @printableResults = null; SET @ i + = 1; FIN
Exemple: exec [dbo].[PrintSQLResults] n'select * from MyTable '
Click to rate this post! [Total: 0 Average: 0]
Topics and keywords
Themes: Serveur d'impression
License & attribution
License: CC BY-ND 4.0.
Attribution required: yes.
Manifest: https://tutos-gameserver.fr/llm-endpoints-manifest.json
LLM Endpoints plugin version 1.1.2.