2015-05-07 2 views
0

Я получаю другой результат для outputParam из набора двух запросов. Первый из них генерируется каркасом entity, и он дает 0 для outputParam. Для второго результата 5.sp_executesql параметр выходного параметра неправильное значение

declare @p2 int 
set @p2=0 
exec sp_executesql N'usp_GetOrders @order_date, @output_param',N'@order_date datetime,@output_param int output',@order_date='2015-05-07 12:37:14.579',@[email protected] output 
select @p2 AS outputParam 

declare @p2 int 
set @p2=0 
exec [dbo].[usp_GetOrders] @order_date='2015-05-07 12:37:14.579',@[email protected] output 
select @p2 AS outputParam 

Процедура выглядит следующим образом

CREATE PROCEDURE [dbo].[usp_GetOrders] 
    @order_date AS datetime, 
    @output_param AS int OUTPUT 
AS 
    BEGIN 

    SELECT @output_param=5 

    SELECT o.Id 
    FROM dbo.[Order] o 
    WHERE OrderDate > @order_date 

    END 

ответ

1

Причина заключается в том, потому что вам не хватает output при вызове процедуры с помощью sp_executesql.

exec sp_executesql N'usp_GetOrders @order_date, @output_param output',N'@order_date datetime,@output_param int output',@order_date='2015-05-07 12:37:14.579',@[email protected] output 

Ваш прямой вызов процедуры правильный, поэтому он возвращает правильное значение. Если вы вызовете свою процедуру без output, она также вернет 0.

exec [dbo].[usp_GetOrders] @order_date='2015-05-07 12:37:14.579',@[email protected] 
+0

Где я скучаю "выход", процедура должна возвращать 5 для @output_param – Milos

+0

sp_executesql не имеет '@output_param OUTPUT' при вызове процедуры' usp_GetOrders @order_date, @ output_param'. Правильно, как вы вызвали процедуру (второй вызов процедуры) – ughai