Как назначить результат exec переменной sql?
Как вы назначаете результат вызова exec переменной в SQL? У меня есть сохраненный proc под названием up_GetBusinessDay
, который возвращает одну дату.
вы можете сделать что-то вроде этого:
exec @PreviousBusinessDay = dbo.up_GetBusinessDay @Date, -1
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
Так что да, это должно работать именно так.