Le istruzioni PRINT sono cruciali in qualsiasi linguaggio di programmazione. Consentiranno alla routine o al programma in esecuzione di scaricare un tipo di registro o informazioni in una console da visualizzare e analizzare. Le stampe sono preziose per il debug dei problemi all'interno del codice di un'applicazione. In questo articolo esploreremo come utilizzare in modo efficace l'istruzione PRINT per aiutare a eseguire il debug di complesse procedure e codice T-SQL memorizzati.
Ottenere S utilizzato con SQL PRINT
L'unica cosa che devi fare per usare PRINT è aggiungere il comando PRINT prima del valore che vuoi stampare sulla console. In questo esempio, la console sarà SQL Server Management Studio, che è l'ambiente di sviluppo principale con cui la maggior parte degli sviluppatori di SQL Server ha familiarità. All'interno di SSMS, puoi visualizzare le tue istruzioni PRINT nella scheda "Messaggi" dopo aver eseguito una query.
I risultati mostreranno l'SQL richiesto dalle tabelle del database.
I messaggi mostreranno le istruzioni PRINT
Eseguiamo il seguente comando in 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'
Questo script fa i seguenti punti:
- Le SELECT e le PRINT possono essere eseguite insieme
- I risultati SELECT e PRINT vengono inseriti in schede separate in SSMS
- Le istruzioni PRINT non fanno distinzione tra maiuscole e minuscole in SQL Server
Semplici esempi
Stampa da variabile T-SQL
Nell'esempio seguente, la variabile @PRINTVAR è impostata su un valore stringa di "PRINTVAR". Tale variabile viene quindi stampata su due righe separate nella console di gestione concatenando i valori con 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.
Stampa altro D ata T sì
NVARCHAR è il tipo di dati di destinazione che sarà richiesto quando si stampa sulla console in SSMS. Quindi altri tipi di dati potrebbero essere trasmessi in modo esplicito a NVARCHAR con un cast o una conversione.
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))
Stampa a Variabile T-SQL in una L ops
Nell'esempio seguente, una variabile di tipo @I verrà aumentata durante ogni iterazione del ciclo e stampata. Questo è un buon esempio di un caso d'uso PRINT per monitorare le modifiche all'interno di una routine.
--ITERATE IN A WHILE LOOP AND PRINT EACH ITERATION.
DECLARE @I INT = 1
WHILE(@I <= 20)
BEGIN
PRINT @I
SET @I += 1
END
Esempio complesso
Abbiamo trattato diversi semplici concetti su come iniziare a utilizzare l'istruzione PRINT in T-SQL. Esaminiamo un esempio più robusto e complicato. Creeremo una procedura memorizzata che accetterà due valori interi e moltiplicherà questi due valori insieme. Mentre la risposta verrà restituita sui risultati, visualizzeremo anche una tabella di moltiplicazione nei messaggi con l'istruzione PRINT.
Imposteremo anche NOCOUNT in modo da non ricevere il messaggio di 1 riga interessato nella tabella delle moltiplicazioni.
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
Il risultato della chiamata alla procedura effettiva moltiplica semplicemente i due numeri interi. Anche le istruzioni PRINT vengono eseguite contemporaneamente e forniscono la tabella di moltiplicazione con la quale possiamo controllare la matematica e infatti 1 x 8 =8. Questo è un buon esempio di aggiunta di dettagli extra in una procedura memorizzata tramite l'istruzione print.
Casi d'uso
Registrazione aggiuntiva
Gli esempi qui non erano molto complessi, ma nel mondo reale potresti imbatterti in una logica complicata nelle stored procedure. L'istruzione PRINT può aiutare a restringere queste complessità e fornire informazioni sulle variabili e sugli eventi al loro interno. In caso di dubbio, aggiungi una dichiarazione PRINT, puoi commentarla ma le informazioni fornite potrebbero farti risparmiare tempo e fatica in seguito.
Riepilogo
Abbiamo trattato l'istruzione PRINT in T-SQL. Produce messaggi che possono essere recuperati in SQL Server Management Studio o restituiti a un'applicazione client che sta leggendo dal database di SQL Server. Abbiamo discusso l'approccio per la stampa di variabili T-SQL e altre considerazioni sul tipo di dati. Abbiamo utilizzato l'istruzione PRINT in un ciclo e una procedura memorizzata più complicata per mostrare il valore che PRINT può fornire in modo operativo quotidiano.