ci sono tre modi in cui puoi usare: il valore RETURN, il parametro OUTPUT e un set di risultati
INOLTRE, fai attenzione se usi lo schema: SELECT @Variable=column FROM table ...
se sono presenti più righe restituite dalla query, la @Variable conterrà solo il valore dell'ultima riga restituita dalla query.
VALORE DI RITORNO
poiché la tua query restituisce un campo int, almeno in base a come lo hai chiamato. puoi usare questo trucco:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
DECLARE @ReturnValue int
SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO
e ora chiama la tua procedura come:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
questo funzionerà solo per INT, perché RETURN può restituire solo un singolo valore int e i valori null vengono convertiti in zero.
PARAMETRO DI USCITA
è possibile utilizzare un parametro di uscita:
CREATE PROCEDURE GetMyInt
( @Param int
,@OutValue int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
e ora chiama la tua procedura come:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue
I parametri di output possono restituire solo un valore, ma possono essere qualsiasi tipo di dati
RESULT SET
per un set di risultati effettua la procedura come:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
usalo come:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
i set di risultati possono avere molte righe e molte colonne di qualsiasi tipo di dati