il existe trois méthodes que vous pouvez utiliser: la valeur de RETOUR, et le paramètre de SORTIE et un jeu de résultats
AUSSI, faites attention, si vous utilisez le modèle: SELECT @Variable=column FROM table ...
si il y a plusieurs lignes renvoyées par la requête, votre @Variable ne contient que la valeur de la dernière ligne retournées par la requête.
VALEUR DE RETOUR
depuis votre requête retourne un int terrain, du moins basé sur la façon dont vous l'a nommé. vous pouvez utiliser cette astuce:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
DECLARE @ReturnValue int
SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO
et maintenant, appelez votre procédure comme:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
cela ne fonctionne que pour les Entiers, parce que le RETOUR ne peut retourner une seule valeur int et les valeurs null sont convertis à un zéro.
PARAMÈTRE DE SORTIE
vous pouvez utiliser un paramètre de sortie:
CREATE PROCEDURE GetMyInt
( @Param int
,@OutValue int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
et maintenant, appelez votre procédure comme:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue
Les paramètres de sortie ne peut retourner qu'une seule valeur, mais peut être n'importe quel type de données
JEU DE RÉSULTATS
pour un ensemble de résultats de rendre la procédure comme:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
utiliser comme:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
des ensembles de résultats peut avoir le nombre de lignes et nombre de colonnes de type de données