136 votes

Comment assigner un résultat d'exécution à une variable sql ?

Comment assigner le résultat d'un appel exec à une variable dans SQL ? J'ai un proc stocké appelé up_GetBusinessDay, qui renvoie une seule date.

Pouvez-vous faire quelque chose comme ça :

exec @PreviousBusinessDay = dbo.up_GetBusinessDay @Date, -1

118voto

KM. Points 51800

J'utilise toujours la valeur de retour pour transmettre le statut de l'erreur. Si vous avez besoin de transmettre une valeur, j'utiliserais un paramètre de sortie.

exemple de procédure stockée, avec un paramètre DE SORTIE :

CREATE PROCEDURE YourStoredProcedure 
(
    @Param1    int
   ,@Param2    varchar(5)
   ,@Param3    datetime OUTPUT
)
AS
IF ISNULL(@Param1,0)>5
BEGIN
    SET @Param3=GETDATE()
END
ELSE
BEGIN
    SET @Param3='1/1/2010'
END
RETURN 0
GO

appel à la procédure stockée, avec un paramètre DE SORTIE :

DECLARE @OutputParameter  datetime
       ,@ReturnValue      int

EXEC @ReturnValue=YourStoredProcedure 1,null, @OutputParameter OUTPUT
PRINT @ReturnValue
PRINT CONVERT(char(23),@OutputParameter ,121)

SORTIE :

0
2010-01-01 00:00:00.000

67voto

Siddhesh Bondre Points 119

Cela fonctionnera si vous souhaitez simplement renvoyer un entier :

DECLARE @ResultForPos INT 
EXEC @ResultForPos = storedprocedureName 'InputParameter'
SELECT @ResultForPos

42voto

AZ Chad Points 1011
declare @EventId int

CREATE TABLE #EventId (EventId int)

insert into #EventId exec rptInputEventId

set @EventId = (select * from #EventId)

drop table #EventId 

6voto

Peter Lang Points 25877

De la documentation (en supposant que vous utilisez SQL-Server) :

USE AdventureWorks;
GO
DECLARE @returnstatus nvarchar(15);
SET @returnstatus = NULL;
EXEC @returnstatus = dbo.ufnGetSalesOrderStatusText @Status = 2;
PRINT @returnstatus;
GO

Donc oui, ça devrait marcher comme ça.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X