Les instructions PRINT sont cruciales dans tout langage de programmation. Ils permettront à la routine ou au programme que vous exécutez de vider un certain type de journal ou d'informations dans une console pour être visualisé et analysé. Les PRINT sont utiles pour déboguer les problèmes dans un code d'application. Dans cet article, nous allons explorer comment utiliser efficacement l'instruction PRINT pour aider à déboguer des procédures stockées et du code T-SQL complexes.
Obtenir S lancé avec SQL PRINT
La seule chose que vous devez faire pour utiliser PRINT est d'ajouter la commande PRINT avant la valeur que vous souhaitez imprimer sur la console. Dans cet exemple, la console sera SQL Server Management Studio, qui est l'environnement de développement principal avec lequel la plupart des développeurs SQL Server sont familiers. Dans SSMS, vous pouvez afficher vos instructions PRINT dans l'onglet "Messages" après avoir exécuté une requête.
Les résultats afficheront le SQL interrogé à partir de vos tables de base de données.
Les messages afficheront les instructions PRINT
Exécutons la commande suivante dans un lot :
--RUN A SELECT TO VIEW THE "RESULTS" TAB
SELECT 1
--RUN PRINT IN LOWERCASE
print 'hello coding sight reader'
--RUN PRINT IN UPPERCASE
PRINT 'HELLO CODING SIGHT READER'
Ce script fait les remarques suivantes :
- Ces SELECT et PRINT peuvent être exécutés ensemble
- Les résultats SELECT et PRINT s'affichent dans des onglets séparés dans SSMS
- Les instructions PRINT ne sont pas sensibles à la casse dans SQL Server
Exemples simples
Impression à partir de la variable T-SQL
Dans l'exemple ci-dessous, la variable @PRINTVAR est définie sur une valeur de chaîne de "PRINTVAR". Cette variable est ensuite imprimée sur deux lignes distinctes dans la console de gestion en concaténant les valeurs avec CHAR(13).
--SETING A VARIABLE AND PRINTING IT
DECLARE @PRINTVAR VARCHAR(500)
SET @PRINTVAR = 'PRINTVAR'
PRINT @PRINTVAR + CHAR(13) + @PRINTVAR --PRINT THE SAME VARIABLE TWICE ON DIFFERENT LINES.
Impression Autre D ata T oui
NVARCHAR est le type de données cible qui sera requis lorsque vous imprimez sur la console dans SSMS. Ainsi, d'autres types de données peuvent être transtypés explicitement en NVARCHAR avec un transtypage ou une conversion.
DECLARE @XML XML
SET @XML = '<root>
<A>*A*</A>
<B>*B*</B>
<C>*C*</C>
<body>*Body*</body>
</root>'
PRINT CAST(@XML as NVARCHAR(MAX))
Impression a Variable T-SQL dans un L oups
Dans l'exemple ci-dessous, une variable de type @I sera incrémentée à chaque itération de la boucle et imprimée. Il s'agit d'un bon exemple de cas d'utilisation PRINT pour surveiller les modifications au sein d'une routine.
--ITERATE IN A WHILE LOOP AND PRINT EACH ITERATION.
DECLARE @I INT = 1
WHILE(@I <= 20)
BEGIN
PRINT @I
SET @I += 1
END
Exemple complexe
Nous avons couvert plusieurs concepts simples sur la façon de commencer à utiliser l'instruction PRINT dans T-SQL. Examinons un exemple plus robuste et compliqué. Nous allons créer une procédure stockée qui acceptera deux valeurs entières et multipliera ces deux valeurs ensemble. Alors que la réponse sera renvoyée sur les résultats, nous afficherons également une table de multiplication dans les messages avec l'instruction PRINT.
Nous allons également définir NOCOUNT sur afin de ne pas recevoir le message affecté à la ligne 1 dans la table de multiplication.
CREATE PROC SPX_MULTIPLY_VALUES(@A INT, @B INT)
AS
SET NOCOUNT ON --REMOVE THE 1 ROWS AFFECTED IN MESSAGE
SELECT @A * @B --RETURN ANSWER
--RETURN MULTIPLICATION TABLE
PRINT '1 '+ '2 '+ '3 '+ '4 '+ '5 '+ '6 '+ '7 '+ '8 '+ '9 '+ '10 '
PRINT '2 '+ '4 '+ '6 '+ '8 '+ '10 '+ '12 '+ '14 '+ '16 '+ '18 '+ '20 '
PRINT '3 '+ '6 '+ '9 '+ '12 '+ '15 '+ '18 '+ '21 '+ '24 '+ '27 '+ '30 '
PRINT '4 '+ '8 '+ '12 '+ '16 '+ '20 '+ '24 '+ '28 '+ '32 '+ '36 '+ '40 '
PRINT '5 '+ '10 '+ '15 '+ '20 '+ '25 '+ '30 '+ '35 '+ '40 '+ '45 '+ '50 '
PRINT '6 '+ '12 '+ '18 '+ '24 '+ '30 '+ '36 '+ '42 '+ '48 '+ '54 '+ '60 '
PRINT '7 '+ '14 '+ '21 '+ '28 '+ '35 '+ '42 '+ '49 '+ '56 '+ '63 '+ '70 '
PRINT '8 '+ '16 '+ '24 '+ '32 '+ '40 '+ '48 '+ '56 '+ '64 '+ '72 '+ '80 '
PRINT '9 '+ '18 '+ '27 '+ '36 '+ '45 '+ '54 '+ '63 '+ '72 '+ '81 '+ '90 '
PRINT '10 '+ '20 '+ '30 '+ '40 '+ '50 '+ '60 '+ '70 '+ '80 '+ '90 '+ '100 '
RETURN
--EXECUTE THE PROCEDURE FOR 1 X 8
EXEC dbo.SPX_MULTIPLY_VALUES 1,8
Le résultat de l'appel de procédure réel multiplie simplement les deux entiers ensemble. Les instructions PRINT s'exécutent également simultanément et fournissent la table de multiplication avec laquelle nous pouvons vérifier les calculs et en effet 1 x 8 =8. C'est un bon exemple d'apport de détails supplémentaires dans une procédure stockée via l'instruction print.
Cas d'utilisation
Journalisation supplémentaire
Les exemples ici n'étaient pas très complexes, mais dans le monde réel, vous pourriez rencontrer une logique compliquée dans les procédures stockées. L'instruction PRINT peut aider à réduire ces complexités et fournir un aperçu des variables et des événements à l'intérieur de celles-ci. En cas de doute, ajoutez une instruction PRINT, vous pouvez les commenter, mais les informations fournies pourraient vous faire gagner du temps et des efforts plus tard.
Résumé
Nous avons couvert l'instruction PRINT dans T-SQL. Il produit des messages qui peuvent être récupérés dans SQL Server Management Studio ou renvoyés à une application cliente qui lit à partir de votre base de données SQL Server. Nous avons discuté de l'approche d'impression des variables T-SQL ainsi que d'autres considérations de type de données. Nous avons utilisé l'instruction PRINT dans une boucle et une procédure stockée plus compliquée pour montrer la valeur que les PRINT peuvent fournir de manière opérationnelle au jour le jour.