Как вы назначаете результат exec вызов переменной в SQL? У меня в хранимой процедуре под названием up_GetBusinessDay
, которая возвращает дату.
Вы можете сделать что-то вроде этого:
exec @PreviousBusinessDay = dbo.up_GetBusinessDay @Date, -1
Я всегда использовать возвращаемое значение, чтобы пройти обратно статус "ошибка". Если вам нужно передать обратно одно значение, Я'd с помощью выходного параметра.
образец хранимую процедуру с выходным параметром:
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
Так что да, он должен работать таким образом.
У меня был тот же вопрос. Хотя есть несколько хороших ответов здесь, я решил создать табличное значение функции. Со столом (или скалярное) значение функции вы Дон'т придется изменить свой хранимой тез. Докл. Я просто сделал выборку из таблицы значение функции. Обратите внимание, что параметр (получающий myparameter является обязательным).
Создать функцию на [dbo].[MyDateFunction] (@Получающий myparameter тип varchar(Макс)) ТАБЛИЦА ВОЗВРАЩАЕТ Как Вернуться ( --- Запрос таблицы или представления или любые и выберите результаты. Выберите Датазнач из mytable, где ID = @получающий myparameter; )
Чтобы присвоить переменной, вы просто можете сделать что-то вроде:
Объявить @MyDate датавремя; Набор @MyDate = (выберите Датазнач от MyDateFunction(@получающий myparameter));
Вы также можете использовать ценят скалярной функции:
Создать TestDateFunction функция() Возвращает значение datetime Начать Возвращение (выберите функцию getdate()); Конец
Затем вы можете просто сделать
Объявить @MyDate датавремя; Набор @MyDate = (выберите dbo.TestDateFunction()); Выберите @MyDate;