Como profesional de SQL Server, no es raro encontrarse con situaciones en las que se necesita trabajar con SQL dinámico y parámetros de entrada/salida. En esta publicación del blog, exploraremos el concepto de los parámetros de entrada y salida en SQL Server y proporcionaremos ejemplos para ayudarte a entender cómo funcionan.
Ejemplo 1: Parámetro de entrada
Comencemos con un ejemplo de uso de un parámetro de entrada en SQL dinámico. Supongamos que tenemos una tabla llamada “Orders” en el esquema “Sales” de la base de datos “WideWorldImporters”. Queremos recuperar el ID del pedido más alto donde el ContactPersonID coincida con un parámetro de entrada dado.
DECLARE @inputParam INT = 3176;
DECLARE @sql NVARCHAR(MAX) = N'SELECT TOP 1 [OrderID]
FROM [WideWorldImporters].[Sales].[Orders]
WHERE ContactPersonID = @id_in';
EXEC sys.sp_executesql @sql, N'@id_in INT', @inputParam;
En este ejemplo, declaramos un parámetro de entrada “@inputParam” con un valor de 3176. Luego construimos una declaración de SQL dinámica que incluye el parámetro de entrada en la cláusula WHERE. Finalmente, ejecutamos el SQL dinámico utilizando el procedimiento almacenado del sistema “sp_executesql”.
Ejemplo 2: Parámetro de salida
A continuación, veamos un ejemplo de uso de un parámetro de salida en SQL dinámico. En este escenario, queremos recuperar el ID del pedido más alto donde el ContactPersonID sea 3176 y almacenarlo en un parámetro de salida.
DECLARE @outputParam INT;
DECLARE @sql NVARCHAR(MAX) = N'SELECT TOP 1 @id_out = [OrderID]
FROM [WideWorldImporters].[Sales].[Orders]
WHERE ContactPersonID = 3176';
EXEC sys.sp_executesql @sql, N'@id_out INT OUT', @outputParam OUT;
SELECT @outputParam OutParamValue;
En este ejemplo, declaramos un parámetro de salida “@outputParam” y construimos una declaración de SQL dinámica que asigna el valor del ID del pedido recuperado al parámetro de salida. Después de ejecutar el SQL dinámico, podemos acceder al valor del parámetro de salida.
Ejemplo 3: Parámetro de entrada/salida
Por último, exploremos un ejemplo de uso de un parámetro de entrada/salida en SQL dinámico. Esto nos permite pasar un valor al SQL dinámico y recuperar un valor modificado de vuelta.
DECLARE @inputParam INT = 3176;
DECLARE @outputParam INT;
DECLARE @sql NVARCHAR(MAX) = N'SELECT TOP 1 @id_out = [OrderID]
FROM [WideWorldImporters].[Sales].[Orders]
WHERE ContactPersonID = @id_in';
EXEC sys.sp_executesql @sql, N'@id_in INT, @id_out INT OUT',
@inputParam, @outputParam OUT;
SELECT @outputParam OutParamValue;
En este ejemplo, declaramos tanto un parámetro de entrada “@inputParam” como un parámetro de salida “@outputParam”. La declaración de SQL dinámica recupera el ID del pedido más alto donde el ContactPersonID coincide con el parámetro de entrada y lo asigna al parámetro de salida. Después de ejecutar el SQL dinámico, podemos acceder al valor modificado del parámetro de salida.
Al comprender estos ejemplos, ahora tienes una plantilla para trabajar con parámetros de entrada y salida en SQL dinámico. Este conocimiento te será útil cuando necesites pasar parámetros y recuperar resultados de manera dinámica. No dudes en marcar esta publicación del blog para futuras referencias.
¡Gracias por leer!