Как назначить результат exec переменной sql?


Как вы назначаете результат вызова exec переменной в SQL? У меня есть сохраненный proc под названием up_GetBusinessDay, который возвращает одну дату.

вы можете сделать что-то вроде этого:

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

4 ответа:

Я всегда использую возвращаемое значение для передачи состояния ошибки. Если вам нужно передать одно значение, я бы использовал выходной параметр.

пример хранимой процедуры, с выходным параметром:

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

вызов хранимой процедуры с выходным параметром:

DECLARE @OutputParameter  datetime
       ,@ReturnValue      int

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

выход:

0
2010-01-01 00:00:00.000

Это будет работать, если вы хотите просто вернуть целое число:

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

CREATE TABLE #EventId (EventId int)

insert into #EventId exec rptInputEventId

set @EventId = (select * from #EventId)

drop table #EventId 

С документация (при условии, что вы используете SQL-сервер):

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

Так что да, это должно работать именно так.