vous pouvez utiliser trois méthodes: la valeur RETURN, le paramètre OUTPUT et un jeu de résultats
AUSSI, faites attention si vous utilisez le modèle: SELECT @Variable=column FROM table ...
s'il y a plusieurs lignes renvoyées par la requête, votre @Variable ne contiendra que la valeur de la dernière ligne renvoyée par la requête.
VALEUR RENVOYÉE
puisque votre requête renvoie un champ int, au moins en fonction de la façon dont vous l'avez 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 appelez maintenant votre procédure comme:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
cela ne fonctionnera que pour les INT, car RETURN ne peut renvoyer qu'une seule valeur int et les valeurs nulles sont converties en 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 appelez maintenant 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 peuvent renvoyer qu'une seule valeur, mais peuvent être de n'importe quel type de données
RESULT SET
pour un jeu de résultats, procédez comme suit:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
utilisez-le comme:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
les jeux de résultats peuvent avoir plusieurs lignes et plusieurs colonnes de n'importe quel type de données
Il existe également une combinaison, vous pouvez utiliser une valeur de retour avec un jeu d'enregistrements:
--Procédure stockée--
--Code d'appel--
--Résultats--
la source
Vous devez utiliser des valeurs de retour.
Ensuite, vous l'appelez comme ceci:
la source
Essayez de faire ceci:
la source