J'ai une procédure stockée que j'essaye de tester. J'essaie de le tester via SQL Management Studio. Afin d'exécuter ce test j'entre ...
exec my_stored_procedure 'param1Value', 'param2Value'
Le dernier paramètre est un output parameter
. Cependant, je ne sais pas comment tester une procédure stockée avec des paramètres de sortie.
Comment exécuter une procédure stockée avec un paramètre de sortie?
Le moyen le plus simple est de right-click
sur le procedure
in Sql Server Management Studio (SSMS),
sélectionnez _execute stored procedure...
_
et ajoutez des valeurs pour les paramètres entrée à l'invite.
SSMS
générera ensuite le code pour exécuter le proc dans une nouvelle fenêtre de requête et l'exécutera pour vous. Vous pouvez étudier le code généré pour voir comment cela se fait.
tu peux le faire :
declare @rowCount int
exec yourStoredProcedureName @outputparameterspOf = @rowCount output
Renvoie la valeur de la procédure
ALTER PROCEDURE testme @input VARCHAR(10),
@output VARCHAR(20) output
AS
BEGIN
IF @input >= '1'
BEGIN
SET @output = 'i am back';
RETURN;
END
END
DECLARE @get VARCHAR(20);
EXEC testme
'1',
@get output
SELECT @get
Cochez cette case, où les deux premiers paramètres sont des paramètres d'entrée et le troisième est le paramètre de sortie dans la définition de procédure.
DECLARE @PK_Code INT;
EXEC USP_Validate_Login 'ID', 'PWD', @PK_Code OUTPUT
SELECT @PK_Code
De http://support.Microsoft.com/kb/262499
Exemple:
CREATE PROCEDURE Myproc
@parm varchar(10),
**@parm1OUT varchar(30) OUTPUT**,
**@parm2OUT varchar(30) OUTPUT**
AS
SELECT @parm1OUT='parm 1' + @parm
SELECT @parm2OUT='parm 2' + @parm
GO
DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
DECLARE @parmIN VARCHAR(10)
DECLARE @parmRET1 VARCHAR(30)
DECLARE @parmRET2 VARCHAR(30)
SET @parmIN=' returned'
SET @SQLString=N'EXEC Myproc @parm,
@parm1OUT OUTPUT, @parm2OUT OUTPUT'
SET @ParmDefinition=N'@parm varchar(10),
@parm1OUT varchar(30) OUTPUT,
@parm2OUT varchar(30) OUTPUT'
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@parm=@parmIN,
@parm1OUT=@parmRET1 OUTPUT,@parm2OUT=@parmRET2 OUTPUT
SELECT @parmRET1 AS "parameter 1", @parmRET2 AS "parameter 2"
GO
DROP PROCEDURE Myproc
J'espère que cela t'aides!
Create Procedure [dbo].[test]
@Name varchar(100),
@ID int Output
As
Begin
SELECT @ID = UserID from tbl_UserMaster where Name = @Name
Return;
END
Declare @ID int
EXECUTE [dbo].[test] 'Abhishek',@ID OUTPUT
PRINT @ID
Commencez par déclarer la variable de sortie:
DECLARE @MyOutputParameter INT;
Ensuite, exécutez la procédure stockée, et vous pouvez le faire sans les noms de paramètre, comme ceci:
EXEC my_stored_procedure 'param1Value', @MyOutputParameter OUTPUT
ou avec les noms de paramètre:
EXEC my_stored_procedure @param1 = 'param1Value', @myoutput = @MyOutputParameter OUTPUT
Et enfin, vous pouvez voir le résultat en faisant un SELECT
:
SELECT @MyOutputParameter
Que dis-tu de ça? C'est extrêmement simplifié:
Le SPROC ci-dessous a un paramètre de sortie de @ParentProductID
Nous voulons sélectionner la valeur de la sortie de @ParentProductID
dans @MyParentProductID
qui est déclaré ci-dessous.
Voici le code:
declare @MyParentProductID int
exec p_CheckSplitProduct @ProductId = 4077, @ParentProductID = @MyParentProductID output
select @MyParentProductID
> Essayez ceci pour le paramètre de sortie multiple:
CREATE PROCEDURE [endicia].[credentialLookup]
@accountNumber varchar(20),
@login varchar(20) output,
@password varchar(50) output
AS
BEGIN
SET NOCOUNT ON;
SELECT top 1 @login = [carrierLogin],@password = [carrierPassword]
FROM [carrier_account] where carrierLogin = @accountNumber
order by clientId, id
END
Try for the result:
SELECT *FROM [carrier_account]
DECLARE @login varchar(20),@password varchar(50)
exec [endicia].[credentialLookup] '588251',@login OUTPUT,@password OUTPUT
SELECT 'login'=@login,'password'=@password
CREATE PROCEDURE DBO.MY_STORED_PROCEDURE
(@PARAM1VALUE INT,
@PARAM2VALUE INT,
@OUTPARAM VARCHAR(20) OUT)
AS
BEGIN
SELECT * FROM DBO.PARAMTABLENAME WHERE PARAM1VALUE=@PARAM1VALUE
END
DECLARE @OUTPARAM2 VARCHAR(20)
EXEC DBO.MY_STORED_PROCEDURE 1,@OUTPARAM2 OUT
PRINT @OUTPARAM2
Veuillez vérifier ci-dessous l'exemple pour obtenir la valeur de la variable de sortie en exécutant une procédure stockée.
DECLARE @return_value int,
@Ouput1 int,
@Ouput2 int,
@Ouput3 int
EXEC @return_value = 'Your Sp Name'
@Param1 = value1,
@Ouput1 = @Ouput1 OUTPUT,
@Ouput2 = @Ouput2 OUTPUT,
@Ouput3 = @Ouput3 OUTPUT
SELECT @Ouput1 as N'@Ouput1',
@Ouput2 as N'@Ouput2',
@Ouput3 as N'@Ouput3'
Voici la procédure stockée
create procedure sp1
(
@id as int,
@name as nvarchar(20) out
)
as
begin
select @name=name from employee where id=@id
end
Et voici comment exécuter la procédure
declare @name1 nvarchar(10)
exec sp1 1,@name1 out
print @name1