[Code] Cómo obtener el valor que retorna un procedimiento almacenado al usar sp_executesql

Saludos, al revisar la documentación oficial de sp_executesql observo que no se presenta la forma de obtener el valor devuelto por un procedimiento almacenado, aquí un ejemplo:

create procedure MiProcedimiento
as
Begin
return 2 --Valor arbitrario
End


declare @script nvarchar(4000)
declare @filasAfectadas int = 0

set @script = 'exec @filasAfectadas = MiProcedimiento'
exec sp_executesql @script, N'@filasAfectadas int output', @filasAfectadas=@filasAfectadas output

print @filasAfectadas 

Al ejecutar el script de ejemplo observamos que se obtiene el resultado del valor devuelto por el procedimiento, la parte clave es pasar una variable marcada con output para tener el resultado

 

 

Espero sea de ayuda,

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP