sql >> Databasteknik >  >> RDS >> Database

Översikt över T-SQL PRINT Statement

PRINT-satser är avgörande i alla programmeringsspråk. De kommer att tillåta rutinen eller programmet som du kör för att dumpa någon typ av logg eller information till en konsol för att ses och analyseras. UTSKRIFTER är värdefulla för att felsöka problem inom en programkod. I den här artikeln kommer vi att utforska hur man effektivt använder PRINT-satsen för att felsöka komplexa T-SQL-lagrade procedurer och kod.

S utvecklad med SQL PRINT

Det enda du behöver göra för att använda PRINT är att lägga till kommandot PRINT före värdet som du vill skriva ut till konsolen. I det här exemplet kommer konsolen att vara SQL Server Management Studio, som är den primära utvecklingsmiljön som de flesta SQL Server-utvecklare känner till. Inuti SSMS kan du se dina PRINT-satser på fliken "Meddelanden" efter att ha kört en fråga.

Resultaten kommer att visa SQL som efterfrågas från dina databastabeller.

Meddelanden kommer att visa PRINT-satserna

Låt oss köra följande kommando i en batch:

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

Det här skriptet gör följande:

  • Dessa SELECTs och PRINTs kan köras tillsammans
  • Resultaten SELECT och PRINT fylls i separata flikar i SSMS
  • PRINT-satser är inte skiftlägeskänsliga i SQL Server

Enkla exempel

Skriva ut från T-SQL-variabel

I exemplet nedan är @PRINTVAR-variabeln satt till strängvärdet "PRINTVAR". Den variabeln skrivs sedan ut på två separata rader i hanteringskonsolen genom att sammanfoga värdena med 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.

Skriva ut annat D ata T ja

NVARCHAR är måldatatypen som kommer att krävas när du skriver ut till konsolen i SSMS. Så andra datatyper kan explicit castas till NVARCHAR med antingen en cast eller konvertera.

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

Skriver ut a T-SQL-variabel i ett L oj

I exemplet nedan kommer en variabel av typen @I att ökas under varje iteration av slingan och skrivas ut. Detta är ett bra exempel på ett PRINT-användningsfall för att övervaka ändringar inom en rutin.

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

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

Komplext exempel

Vi har täckt flera enkla koncept för hur man kommer igång med att använda PRINT-satsen i T-SQL. Låt oss undersöka ett mer robust och komplicerat exempel. Vi kommer att skapa en lagrad procedur som accepterar två heltalsvärden och flera dessa två värden tillsammans. Medan svaret kommer att returneras på resultaten, kommer vi också att visa en multiplikationstabell i meddelandena med PRINT-satsen.

Vi kommer också att ställa in NOCOUNT på så att vi inte får meddelandet på 1 rad i multiplikationstabellen.

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

Resultatet av själva proceduranropet multiplicerar helt enkelt de två heltalen tillsammans. PRINT-satserna körs också samtidigt och tillhandahåller multiplikationstabellen med vilken vi kan kontrollera matematiken och faktiskt 1 x 8 =8. Detta är ett bra exempel på att få in extra detaljer i en lagrad procedur via print-satsen.

Användningsfall

Ytterligare loggning

Exemplen här var inte särskilt komplexa, men i den verkliga världen kan du stöta på komplicerad logik i lagrade procedurer. PRINT-satsen kan hjälpa till att begränsa dessa komplexiteter och ge insikt i variablerna och händelserna i dem. Om du är osäker, lägg till ett PRINT-uttalande, du kan kommentera dem, men den insikt som du får kan spara tid och ansträngning senare.

Sammanfattning

Vi har täckt PRINT-satsen i T-SQL. Den producerar meddelanden som kan hämtas i SQL Server Management Studio eller returneras till en klientapplikation som läser från din SQL Server-databas. Vi diskuterade tillvägagångssättet för att skriva ut T-SQL-variabler såväl som andra överväganden om datatyp. Vi använde PRINT-satsen i en loop och en mer komplicerad lagrad procedur för att visa värdet som PRINTs kan ge på ett dagligt operativt sätt.


  1. Slash eller ingen Slash?

  2. Oracle 18c Ny funktion:Onlinemodifiering av partitionering

  3. Vad är betydelsen av 1/1/1753 i SQL Server?

  4. Kan jag ansluta till SQL Server med Windows-autentisering från Java EE-webbappen?