Database
 sql >> Datenbank >  >> RDS >> Database

Überblick über die T-SQL PRINT-Anweisung

PRINT-Anweisungen sind in jeder Programmiersprache von entscheidender Bedeutung. Sie ermöglichen der Routine oder dem Programm, das Sie ausführen, eine Art Protokoll oder Informationen in einer Konsole anzuzeigen und zu analysieren. PRINTs sind wertvoll, um Probleme innerhalb eines Anwendungscodes zu debuggen. In diesem Artikel untersuchen wir, wie Sie die PRINT-Anweisung effektiv verwenden können, um komplexe gespeicherte T-SQL-Prozeduren und Code zu debuggen.

Bekomme S gestartet mit SQL PRINT

Das einzige, was Sie tun müssen, um PRINT zu verwenden, ist, den Befehl PRINT vor den Wert anzuhängen, den Sie auf der Konsole ausgeben möchten. In diesem Beispiel ist die Konsole SQL Server Management Studio, die primäre Entwicklungsumgebung, mit der die meisten SQL Server-Entwickler vertraut sind. Innerhalb von SSMS können Sie Ihre PRINT-Anweisungen auf der Registerkarte „Nachrichten“ anzeigen, nachdem Sie eine Abfrage ausgeführt haben.

Die Ergebnisse zeigen das aus Ihren Datenbanktabellen abgefragte SQL.

Nachrichten zeigen die PRINT-Anweisungen

Lassen Sie uns den folgenden Befehl in einem Batch ausführen:

--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'

Dieses Skript macht die folgenden Punkte:

  • Diese SELECTs und PRINTs können zusammen ausgeführt werden
  • Die SELECT- und PRINT-Ergebnisse werden in SSMS in separaten Registerkarten ausgefüllt
  • PRINT-Anweisungen unterscheiden in SQL Server nicht zwischen Groß- und Kleinschreibung

Einfache Beispiele

Drucken von T-SQL-Variablen

Im folgenden Beispiel wird die @PRINTVAR-Variable auf den Zeichenfolgenwert „PRINTVAR“ gesetzt. Diese Variable wird dann in zwei separaten Zeilen in der Verwaltungskonsole ausgegeben, indem die Werte mit CHAR(13) verkettet werden.


--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.

Drucken Sonstiges D ata T ja

NVARCHAR ist der Zieldatentyp, der erforderlich ist, wenn Sie in SSMS an die Konsole drucken. Daher können andere Datentypen entweder mit einer Umwandlung oder einer Konvertierung explizit in NVARCHAR umgewandelt werden.

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))

Drucken von a T-SQL-Variable in einem L oop

Im folgenden Beispiel wird eine Variable vom Typ @I bei jeder Iteration der Schleife erhöht und ausgegeben. Dies ist ein gutes Beispiel für einen PRINT-Anwendungsfall, um Änderungen innerhalb einer Routine zu überwachen.

--ITERATE IN A WHILE LOOP AND PRINT EACH ITERATION.
DECLARE @I INT = 1

WHILE(@I <= 20)
	BEGIN
		PRINT @I
		SET @I += 1
	END

Komplexes Beispiel

Wir haben einige einfache Konzepte für den Einstieg in die Verwendung der PRINT-Anweisung in T-SQL behandelt. Betrachten wir ein robusteres und komplizierteres Beispiel. Wir erstellen eine gespeicherte Prozedur, die zwei ganzzahlige Werte akzeptiert und diese beiden Werte miteinander multipliziert. Während die Antwort auf die Ergebnisse zurückgegeben wird, zeigen wir auch eine Multiplikationstabelle in den Nachrichten mit der PRINT-Anweisung an.

Wir werden auch NOCOUNT aktivieren, damit wir nicht die Meldung „1 Zeile betroffen“ in der Multiplikationstabelle erhalten.

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

Das Ergebnis des eigentlichen Prozeduraufrufs multipliziert einfach die beiden Ganzzahlen miteinander. Die PRINT-Anweisungen werden auch gleichzeitig ausgeführt und liefern die Multiplikationstabelle, mit der wir die Mathematik und tatsächlich 1 x 8 =8 überprüfen können. Dies ist ein gutes Beispiel dafür, wie man über die print-Anweisung zusätzliche Details in eine gespeicherte Prozedur bringt.

Anwendungsfälle

Zusätzliche Protokollierung

Die Beispiele hier waren nicht sehr komplex, aber in der realen Welt könnten Sie in gespeicherten Prozeduren auf eine komplizierte Logik stoßen. Die PRINT-Anweisung kann dabei helfen, diese Komplexitäten einzugrenzen und einen Einblick in die Variablen und Vorgänge darin zu geben. Fügen Sie im Zweifelsfall eine PRINT-Anweisung hinzu, Sie können sie auskommentieren, aber der bereitgestellte Einblick kann Ihnen später Zeit und Mühe ersparen.

Zusammenfassung

Wir haben die PRINT-Anweisung in T-SQL behandelt. Es erzeugt Nachrichten, die in SQL Server Management Studio abgerufen oder an eine Clientanwendung zurückgegeben werden können, die aus Ihrer SQL Server-Datenbank liest. Wir haben den Ansatz zum Drucken von T-SQL-Variablen sowie andere Überlegungen zum Datentyp besprochen. Wir haben die PRINT-Anweisung in einer Schleife und eine kompliziertere gespeicherte Prozedur verwendet, um den Wert zu zeigen, den PRINTs im täglichen Betrieb bieten können.