sql >> Database >  >> RDS >> Database

Overzicht van T-SQL PRINT-verklaring

PRINT-instructies zijn cruciaal in elke programmeertaal. Ze zorgen ervoor dat de routine of het programma dat u uitvoert een soort log of informatie in een console dumpt om te bekijken en te analyseren. PRINT's zijn waardevol voor het debuggen van problemen binnen een applicatiecode. In dit artikel zullen we onderzoeken hoe u de PRINT-instructie effectief kunt gebruiken om complexe T-SQL-opgeslagen procedures en code te debuggen.

S . krijgen gestart met SQL PRINT

Het enige dat u hoeft te doen om PRINT te gebruiken, is het commando PRINT toe te voegen voor de waarde die u naar de console wilt afdrukken. In dit voorbeeld is de console SQL Server Management Studio, de primaire ontwikkelomgeving waarmee de meeste SQL Server-ontwikkelaars bekend zijn. Binnen SSMS kunt u uw PRINT-instructies bekijken op het tabblad "Berichten" nadat u een zoekopdracht heeft uitgevoerd.

De resultaten tonen de SQL die is opgevraagd uit uw databasetabellen.

Berichten tonen de PRINT-statements

Laten we de volgende opdracht in een batch uitvoeren:

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

Dit script maakt de volgende punten:

  • Die SELECT's en PRINTs kunnen samen worden uitgevoerd
  • De SELECT- en PRINT-resultaten worden in afzonderlijke tabbladen in SSMS ingevuld
  • PRINT-instructies zijn niet hoofdlettergevoelig in SQL Server

Eenvoudige voorbeelden

Afdrukken vanuit T-SQL-variabele

In het onderstaande voorbeeld is de variabele @PRINTVAR ingesteld op de tekenreekswaarde "PRINTVAR". Die variabele wordt vervolgens afgedrukt op twee afzonderlijke regels in de beheerconsole door de waarden samen te voegen met 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.

Andere afdrukken D bij T ja

NVARCHAR is het doelgegevenstype dat vereist is wanneer u in SSMS naar de console afdrukt. Andere gegevenstypen kunnen dus expliciet naar NVARCHAR worden gecast met een cast of conversie.

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

Afdrukken a T-SQL-variabele in een L oeps

In het onderstaande voorbeeld wordt een variabele van het type @I tijdens elke iteratie van de lus verhoogd en afgedrukt. Dit is een goed voorbeeld van een PRINT-gebruiksscenario om veranderingen binnen een routine te monitoren.

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

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

Complex voorbeeld

We hebben verschillende eenvoudige concepten behandeld om aan de slag te gaan met het PRINT-statement in T-SQL. Laten we een robuuster en gecompliceerder voorbeeld bekijken. We zullen een opgeslagen procedure maken die twee gehele waarden accepteert en die twee waarden samen vermenigvuldigt. Hoewel het antwoord op de resultaten wordt geretourneerd, zullen we ook een vermenigvuldigingstabel weergeven in de berichten met het PRINT-statement.

We zullen ook NOCOUNT op zetten, zodat we niet het bericht met de betreffende 1 rij in de vermenigvuldigingstabel krijgen.

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

Het resultaat van de eigenlijke procedureaanroep vermenigvuldigt eenvoudig de twee gehele getallen met elkaar. De PRINT-statements lopen ook gelijktijdig en leveren de vermenigvuldigingstabel waarmee we de wiskunde kunnen controleren en inderdaad 1 x 8 =8. Dit is een goed voorbeeld van het extra detail brengen in een opgeslagen procedure via het print-statement.

Gebruiksvoorbeelden

Aanvullende logboekregistratie

De voorbeelden hier waren niet erg ingewikkeld, maar in de echte wereld zou je in opgeslagen procedures ingewikkelde logica kunnen tegenkomen. De PRINT-instructie kan helpen om die complexiteit te verkleinen en inzicht te geven in de variabelen en gebeurtenissen erin. Voeg bij twijfel een PRINT-statement toe, je kunt er commentaar op geven, maar het verschafte inzicht kan je later tijd en moeite besparen.

Samenvatting

We hebben de PRINT-instructie in T-SQL behandeld. Het produceert berichten die kunnen worden opgehaald in SQL Server Management Studio of worden teruggestuurd naar een clienttoepassing die leest uit uw SQL Server-database. We bespraken de aanpak voor het afdrukken van T-SQL-variabelen en andere overwegingen voor gegevenstypes. We gebruikten de PRINT-instructie in een lus en een meer gecompliceerde opgeslagen procedure om de waarde te laten zien die PRINT's kunnen bieden op een dagelijkse operationele manier.


  1. Gegevens koppelen aan of importeren uit Salesforce

  2. Postgres UNIEKE BEPERKING voor array

  3. 3 functies die de dag, de maand en het jaar uit een datum halen in PostgreSQL

  4. Hoe OCT() werkt in MariaDB