Los parámetros de salida en SQL Server te permiten recuperar valores de un procedimiento almacenado después de que termine de ejecutarse. Estos valores se pueden establecer y manipular dentro del procedimiento almacenado, lo que los hace más versátiles que el valor de retorno que solo devuelve un tipo de dato int. Puedes tener múltiples parámetros de salida de cualquier tipo de dato.
Echemos un vistazo a un ejemplo de procedimiento almacenado:
CREATE PROCEDURE spOutput
@intValue int = 0 OUTPUT,
@strValue varchar(30) = 'Default varchar' OUTPUT,
@bitValue bit = 0 OUTPUT
AS
SET NOCOUNT ON
SELECT @intValue AS [@intValue], @strValue AS [@strValue], @bitValue AS [@bitValue]
SET @intValue = @intValue + 10
SET @bitValue = CASE @bitValue WHEN 0 THEN 1 ELSE 0 END
SET @strValue = 'OLD_' + @strValue
SELECT @intValue AS [@intValue], @strValue AS [@strValue], @bitValue AS [@bitValue]
En este procedimiento almacenado, los tres parámetros están definidos como parámetros de salida. Ahora, veamos cómo podemos usar estos parámetros de salida.
Ejemplo 1
Puedes ejecutar el procedimiento almacenado sin capturar los valores de los parámetros de salida. El procedimiento almacenado se ejecutará como de costumbre. Por ejemplo:
EXEC spOutputEl resultado será:
@intValue @strValue @bitValue ----------- ------------------------------ --------- 0 Default varchar 0 @intValue @strValue @bitValue ----------- ------------------------------ --------- 10 OLD_Default varchar 1
Ejemplo 2
Si necesitas capturar el valor de uno de los parámetros de salida, puedes declarar una variable y usar la palabra clave OUTPUT. Aquí tienes un ejemplo:
DECLARE @intValue1 int
SET @intValue1 = -5
EXEC spOutput
@intValue = @intValue1 OUTPUT,
@strValue = 'My test.',
@bitValue = 1
PRINT @intValue1
El resultado será:
@intValue @strValue @bitValue ----------- ------------------------------ --------- -5 My test. 1 @intValue @strValue @bitValue ----------- ------------------------------ --------- 5 OLD_My test. 0
Ten en cuenta que solo puedes recuperar un valor de un parámetro de salida cuando usas una variable para enviar un valor. Intentar colocar la palabra clave OUTPUT después de un valor constante resultará en un error.
Ejemplo 3
Puedes capturar los valores de los tres parámetros de salida utilizando variables separadas. Aquí tienes un ejemplo:
DECLARE @intValue1 int, @strValue varchar(20), @bitValue bit
SET @intValue1 = -5
SET @strValue = 'My test.'
SET @bitValue = 1
EXEC spOutput
@intValue = @intValue1 OUTPUT,
@strValue = @strValue OUTPUT,
@bitValue = @bitValue OUTPUT
SELECT @intValue1, @strValue, @bitValue
En este ejemplo, los dos últimos parámetros reciben sus valores de variables con el mismo nombre que los parámetros. Sin embargo, no importa si los nombres son iguales o diferentes.
Ejemplo 4
Si no usas la palabra clave OUTPUT para una de las variables, no obtendrás el valor modificado de vuelta. El procedimiento almacenado seguirá utilizando el valor que envías, pero no actualizará la variable sin la palabra clave OUTPUT. Aquí tienes un ejemplo:
DECLARE @intValue1 int, @strValue varchar(20), @bitValue bit
SET @intValue1 = -5
SET @strValue = 'My test.'
SET @bitValue = 1
EXEC spOutput
@intValue = @intValue1,
@strValue = @strValue OUTPUT,
@bitValue = @bitValue OUTPUT
SELECT @intValue1, @strValue, @bitValue
En este caso, el valor de @intValue1 no cambiará aunque se haya modificado dentro del procedimiento almacenado.
Conclusión
En este artículo, hemos explorado cómo usar parámetros de salida en procedimientos almacenados de SQL Server. Los parámetros de salida te permiten capturar datos en variables que se pueden utilizar una vez que el procedimiento almacenado haya terminado de ejecutarse. Recuerda declarar la palabra clave OUTPUT en el procedimiento almacenado y definirla con el comando de ejecución del procedimiento almacenado para que los parámetros de salida funcionen.