sql >> Base de Datos >  >> RDS >> Database

Descripción general de la instrucción PRINT de T-SQL

Las declaraciones PRINT son cruciales en cualquier lenguaje de programación. Permitirán que la rutina o el programa que está ejecutando descargue algún tipo de registro o información en una consola para ser visto y analizado. Los PRINT son valiosos para depurar problemas dentro de un código de aplicación. En este artículo, exploraremos cómo usar de manera efectiva la instrucción PRINT para ayudar a depurar códigos y procedimientos almacenados T-SQL complejos.

Obteniendo S comenzó con SQL PRINT

Lo único que debe hacer para usar IMPRIMIR es agregar el comando IMPRIMIR antes del valor que desea imprimir en la consola. En este ejemplo, la consola será SQL Server Management Studio, que es el entorno de desarrollo principal con el que están familiarizados la mayoría de los desarrolladores de SQL Server. Dentro de SSMS, puede ver sus extractos PRINT en la pestaña "Mensajes" después de ejecutar una consulta.

Los resultados mostrarán el SQL consultado de las tablas de su base de datos.

Los mensajes mostrarán las sentencias PRINT

Ejecutemos el siguiente comando en un lote:

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

Este script hace los siguientes puntos:

  • Esos SELECT e PRINT se pueden ejecutar juntos
  • Los resultados de SELECCIONAR e IMPRIMIR se completan en pestañas separadas en SSMS
  • Las declaraciones PRINT no distinguen entre mayúsculas y minúsculas en SQL Server

Ejemplos simples

Impresión desde variable T-SQL

En el siguiente ejemplo, la variable @PRINTVAR se establece en un valor de cadena de "PRINTVAR". Luego, esa variable se imprime en dos líneas separadas en la consola de administración concatenando los valores 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.

Imprimir Otro D ata T si

NVARCHAR es el tipo de datos de destino que se requerirá cuando imprima en la consola en SSMS. Por lo tanto, otros tipos de datos pueden convertirse explícitamente en NVARCHAR con una conversión o una conversión.

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

Imprimiendo a Variable T-SQL en una L oop

En el siguiente ejemplo, una variable de tipo @I se incrementará durante cada iteración del bucle y se imprimirá. Este es un buen ejemplo de un caso de uso de PRINT para monitorear cambios dentro de una rutina.

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

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

Ejemplo complejo

Hemos cubierto varios conceptos simples sobre cómo comenzar a usar la instrucción PRINT en T-SQL. Examinemos un ejemplo más robusto y complicado. Crearemos un procedimiento almacenado que aceptará dos valores enteros y multiplicará esos dos valores juntos. Si bien la respuesta se devolverá en los resultados, también mostraremos una tabla de multiplicar en los mensajes con la instrucción PRINT.

También activaremos NOCOUNT para que no obtengamos el mensaje afectado de 1 fila en la tabla de multiplicar.

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

El resultado de la llamada al procedimiento real simplemente multiplica los dos enteros. Las sentencias PRINT también se ejecutan simultáneamente y proporcionan la tabla de multiplicar con la que podemos verificar las matemáticas y, de hecho, 1 x 8 =8. Este es un buen ejemplo de incorporar detalles adicionales en un procedimiento almacenado a través de la sentencia print.

Casos de uso

Registro adicional

Los ejemplos aquí no fueron muy complejos, pero en el mundo real, es posible que se encuentre con una lógica complicada en los procedimientos almacenados. La declaración PRINT puede ayudar a reducir esas complejidades y proporcionar información sobre las variables y los acontecimientos dentro de ellas. En caso de duda, agregue una instrucción PRINT, puede comentarla, pero la información proporcionada podría ahorrarle tiempo y esfuerzo más adelante.

Resumen

Hemos cubierto la instrucción PRINT en T-SQL. Produce mensajes que pueden recuperarse en SQL Server Management Studio o devolverse a una aplicación cliente que lee desde su base de datos de SQL Server. Discutimos el enfoque para imprimir variables T-SQL, así como otras consideraciones sobre tipos de datos. Usamos la declaración PRINT en un bucle y un procedimiento almacenado más complicado para mostrar el valor que PRINT puede proporcionar de manera operativa diaria.