Hay tres formas de usar: el valor RETURN y el parámetro OUTPUT y un conjunto de resultados.
TAMBIÉN, ten cuidado si usas el patrón: SELECT @Variable=column FROM table ...
si hay varias filas devueltas por la consulta, su @Variable solo contendrá el valor de la última fila devuelta por la consulta.
VALOR DEVUELTO
ya que su consulta devuelve un campo int, al menos según cómo lo nombró. puedes usar este truco:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
DECLARE @ReturnValue int
SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO
y ahora llame a su procedimiento como:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
esto solo funcionará para INT, porque RETURN solo puede devolver un único valor int y los nulos se convierten a cero.
PARÁMETRO DE SALIDA
puede utilizar un parámetro de salida:
CREATE PROCEDURE GetMyInt
( @Param int
,@OutValue int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
y ahora llame a su procedimiento como:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue
Los parámetros de salida solo pueden devolver un valor, pero pueden ser de cualquier tipo de datos
CONJUNTO DE RESULTADOS
para un conjunto de resultados haga el procedimiento como:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
úsalo como:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
los conjuntos de resultados pueden tener muchas filas y muchas columnas de cualquier tipo de datos