sql >> Database teknologi >  >> RDS >> Database

Oversigt over T-SQL PRINT-erklæring

PRINT-udsagn er afgørende i ethvert programmeringssprog. De vil tillade, at rutinen eller programmet, som du kører, kan dumpe en eller anden form for log eller information ind i en konsol, der kan ses og analyseres. UDSKRIVNINGER er værdifulde for fejlfinding af problemer i en applikationskode. I denne artikel vil vi undersøge, hvordan man effektivt kan bruge PRINT-sætningen til at hjælpe med at fejlsøge komplekse T-SQL-lagrede procedurer og kode.

S udviklet med SQL PRINT

Det eneste du skal gøre for at bruge PRINT er at tilføje kommandoen PRINT før den værdi, du vil udskrive til konsollen. I dette eksempel vil konsollen være SQL Server Management Studio, som er det primære udviklingsmiljø, de fleste SQL Server-udviklere kender til. Inde i SSMS kan du se dine PRINT-udsagn på fanen "Beskeder" efter at have kørt en forespørgsel.

Resultaterne vil vise den SQL, der forespørges ud af dine databasetabeller.

Meddelelser viser PRINT-sætningerne

Lad os køre følgende 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'

Dette script gør følgende:

  • Disse SELECTs og PRINTs kan køres sammen
  • Resultaterne SELECT og PRINT udfyldes i separate faner i SSMS
  • PRINT-sætninger skelner ikke mellem store og små bogstaver i SQL Server

Enkle eksempler

Udskrivning fra T-SQL-variabel

I eksemplet nedenfor er @PRINTVAR-variablen sat til en strengværdi på "PRINTVAR". Denne variabel udskrives derefter på to separate linjer i administrationskonsollen ved at sammenkæde værdierne 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.

Udskrivning af Andet D ata T ja

NVARCHAR er måldatatypen, der kræves, når du udskriver til konsollen i SSMS. Så andre datatyper kan eksplicit castes til NVARCHAR med enten en cast eller konverter.

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

Udskrivning af a T-SQL-variabel i et L up

I eksemplet nedenfor vil en variabel af typen @I blive forøget under hver iteration af løkken og udskrevet. Dette er et godt eksempel på en PRINT use case til at overvåge ændringer i en rutine.

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

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

Kompleks eksempel

Vi har dækket flere simple koncepter for, hvordan du kommer i gang med at bruge PRINT-sætningen i T-SQL. Lad os undersøge et mere robust og kompliceret eksempel. Vi vil oprette en lagret procedure, der accepterer to heltalsværdier og flere disse to værdier sammen. Mens svaret vil blive returneret på resultaterne, vil vi også vise en multiplikationstabel i meddelelserne med PRINT-sætningen.

Vi vil også indstille NOCOUNT til, så vi ikke får den 1 række berørte besked 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 af det faktiske procedurekald multiplicerer simpelthen de to heltal sammen. PRINT-sætningerne kører også samtidigt og giver multiplikationstabellen, som vi kan kontrollere matematikken med og faktisk 1 x 8 =8. Dette er et godt eksempel på at bringe ekstra detaljer ind i en lagret procedure via print-sætningen.

Use Cases

Yderligere logning

Eksemplerne her var ikke særlig komplekse, men i den virkelige verden kan du løbe ind i noget kompliceret logik i lagrede procedurer. PRINT-sætningen kan hjælpe med at indsnævre disse kompleksiteter og give indsigt i variablerne og hændelser inde i dem. Hvis du er i tvivl, tilføj en PRINT-erklæring, du kan kommentere dem, men den indsigt, der gives, kan spare dig for tid og kræfter senere.

Oversigt

Vi har dækket PRINT-sætningen i T-SQL. Det producerer meddelelser, som kan hentes i SQL Server Management Studio eller returneres til en klientapplikation, der læser fra din SQL Server-database. Vi diskuterede tilgangen til udskrivning af T-SQL-variabler såvel som andre datatypeovervejelser. Vi brugte PRINT-sætningen i en løkke og en mere kompliceret lagret procedure til at vise den værdi, som PRINTs kan give på en daglig måde.


  1. SQL Server-databasereplikering

  2. Betydning af firkantede parenteser [] i MS-SQL tabeldesigner?

  3. SQL Ydeevne UNION vs. OR

  4. Tilslutning af Talend på Windows til en ODBC-database