web-dev-qa-db-fra.com

Comment assigner un résultat exec à une variable SQL?

Comment attribuez-vous le résultat d'un appel exec à une variable SQL? J'ai un proc stocké appelé up_GetBusinessDay, qui renvoie une date unique.

Pouvez-vous faire quelque chose comme ça:

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

J'utilise toujours la valeur de retour pour transmettre le statut d'erreur. Si vous devez renvoyer une valeur, j'utilise un paramètre de sortie.

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

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 de la procédure stockée, avec un paramètre OUTPUT:

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
86
KM.

Cela fonctionnera si vous souhaitez simplement renvoyer un entier:

DECLARE @ResultForPos INT 
EXEC @ResultForPos = storedprocedureName 'InputParameter'
SELECT @ResultForPos
49
Siddhesh Bondre
declare @EventId int

CREATE TABLE #EventId (EventId int)

insert into #EventId exec rptInputEventId

set @EventId = (select * from #EventId)

drop table #EventId 
27
AZ Chad

Depuis le 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

Alors oui, cela devrait fonctionner ainsi.

6
Peter Lang