Příkazy PRINT jsou klíčové v každém programovacím jazyce. Umožní rutině nebo programu, který spouštíte, vypsat určitý typ protokolu nebo informací do konzoly, kde je lze prohlížet a analyzovat. Tisky jsou cenné pro ladění problémů v kódu aplikace. V tomto článku prozkoumáme, jak efektivně používat příkaz PRINT k ladění složitých uložených procedur a kódu T-SQL.
Získávání S začal s SQL PRINT
Jediná věc, kterou musíte udělat, abyste mohli použít PRINT, je připojit příkaz PRINT před hodnotu, kterou chcete vytisknout do konzoly. V tomto příkladu bude konzolí SQL Server Management Studio, což je primární vývojové prostředí, které většina vývojářů SQL Server zná. Uvnitř SSMS si můžete po spuštění dotazu prohlédnout výpisy TISK na kartě „Zprávy“.
Výsledky zobrazí dotaz SQL z vašich databázových tabulek.
Zprávy zobrazí příkazy PRINT
Spusťte následující příkaz v dávce:
--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'
Tento skript dělá následující body:
- Tyto SELECTy a PRINTy lze spouštět společně
- Výsledky SELECT a PRINT se v SSMS vyplní na samostatných kartách
- Příkazy PRINT na serveru SQL nerozlišují velká a malá písmena
Jednoduché příklady
Tisk z proměnné T-SQL
V níže uvedeném příkladu je proměnná @PRINTVAR nastavena na hodnotu řetězce „PRINTVAR“. Tato proměnná je poté vytištěna na dvou samostatných řádcích v konzole pro správu zřetězením hodnot pomocí 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.
Tisk jiné D ata T ano
NVARCHAR je cílový datový typ, který bude vyžadován při tisku na konzoli v SSMS. Takže jiné datové typy mohou být explicitně přetypovány do NVARCHAR buď přetypováním, nebo převodem.
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))
Tisk a Proměnná T-SQL v L oop
V níže uvedeném příkladu bude proměnná typu @I zvýšena během každé iterace smyčky a vytištěna. Toto je dobrý příklad případu použití PRINT pro sledování změn v rámci rutiny.
--ITERATE IN A WHILE LOOP AND PRINT EACH ITERATION.
DECLARE @I INT = 1
WHILE(@I <= 20)
BEGIN
PRINT @I
SET @I += 1
END
Složitý příklad
Probrali jsme několik jednoduchých konceptů, jak začít používat příkaz PRINT v T-SQL. Podívejme se na robustnější a komplikovanější příklad. Vytvoříme uloženou proceduru, která bude přijímat dvě celočíselné hodnoty a násobit tyto dvě hodnoty dohromady. Zatímco odpověď bude vrácena na výsledky, zobrazíme také tabulku násobení ve zprávách s příkazem PRINT.
Nastavíme také NOCOUNT na, aby se nám v násobilce nedostala zpráva o 1 řádku.
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
Výsledek skutečného volání procedury jednoduše vynásobí dvě celá čísla dohromady. Příkazy PRINT také běží současně a poskytují tabulku násobení, pomocí které můžeme zkontrolovat matematiku a skutečně 1 x 8 =8. Toto je dobrý příklad vnesení dalších podrobností do uložené procedury prostřednictvím příkazu print.
Případy použití
Další protokolování
Zde uvedené příklady nebyly příliš složité, ale ve skutečném světě můžete v uložených procedurách narazit na komplikovanou logiku. Příkaz PRINT může pomoci zúžit tyto složitosti a poskytnout vhled do proměnných a dění uvnitř nich. Pokud si nejste jisti, přidejte prohlášení PRINT, můžete je okomentovat, ale poskytnutý přehled vám může později ušetřit čas a námahu.
Shrnutí
Probrali jsme příkaz PRINT v T-SQL. Vytváří zprávy, které lze načíst v SQL Server Management Studio nebo vrátit do klientské aplikace, která čte z databáze SQL Server. Diskutovali jsme o přístupu k tisku proměnných T-SQL a také o dalších úvahách o datových typech. Použili jsme příkaz PRINT ve smyčce a složitější uloženou proceduru, abychom ukázali hodnotu, kterou mohou PRINTy poskytnout každodenním provozním způsobem.