Eso depende de la naturaleza de la información que desea devolver.
Si es un valor entero único, puede usar el return
declaración
create proc myproc
as
begin
return 1
end
go
declare @i int
exec @i = myproc
Si tiene un valor no entero o una cantidad de valores escalares, puede usar parámetros de salida
create proc myproc
@a int output,
@b varchar(50) output
as
begin
select @a = 1, @b='hello'
end
go
declare @i int, @j varchar(50)
exec myproc @i output, @j output
Si desea devolver un conjunto de datos, puede usar insert exec
create proc myproc
as
begin
select name from sysobjects
end
go
declare @t table (name varchar(100))
insert @t (name)
exec myproc
Incluso puedes devolver un cursor, pero eso es horrible, así que no daré un ejemplo :)