Isso depende da natureza das informações que você deseja retornar.
Se for um único valor inteiro, você pode usar o
return
demonstração create proc myproc
as
begin
return 1
end
go
declare @i int
exec @i = myproc
Se você tiver um valor não inteiro ou vários valores escalares, poderá usar parâmetros de saída
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
Se você quiser retornar um conjunto de dados, você pode 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
Você pode até retornar um cursor, mas isso é horrível, então não darei um exemplo :)