Existem três maneiras de usar: o valor RETURN, o parâmetro OUTPUT e um conjunto de resultados
TAMBÉM, cuidado se você usar o padrão: SELECT @Variable=column FROM table ...
se houver várias linhas retornadas da consulta, sua @Variable conterá apenas o valor da última linha retornada pela consulta.
VALOR DE RETORNO,
pois sua consulta retorna um campo int, pelo menos com base em como você o nomeou. você pode usar este truque:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
DECLARE @ReturnValue int
SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO
e agora chame seu procedimento como:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
isso só funcionará para INTs, porque RETURN só pode retornar um único valor int e os nulos são convertidos em zero.
OUTPUT PARAMETER
você pode usar um parâmetro de saída:
CREATE PROCEDURE GetMyInt
( @Param int
,@OutValue int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
e agora chame seu procedimento como:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue
Os parâmetros de saída podem retornar apenas um valor, mas podem ser de qualquer tipo de dados
RESULT SET
para um conjunto de resultados, faça o procedimento como:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
use-o como:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
os conjuntos de resultados podem ter muitas linhas e muitas colunas de qualquer tipo de dados
Também há uma combinação, você pode usar um valor de retorno com um conjunto de registros:
--Procedimento armazenado--
- Código de Chamada--
--Resultados--
fonte
Você precisaria usar valores de retorno.
Então você chama assim:
fonte
Tente fazer isso:
fonte