sp_executesql 输出参数值不正确
sp_executesql output parameter incorrect value
我从两个查询中得到不同的 outputParam 结果。第一个由 entity framework 生成,它为 outputParam 提供 0。因为第二个结果是 5.
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',@output_param=@p2 output
select @p2 AS outputParam
declare @p2 int
set @p2=0
exec [dbo].[usp_GetOrders] @order_date='2015-05-07 12:37:14.579',@output_param=@p2 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
原因是你在使用sp_executesql
调用过程时缺少output
。
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',@output_param=@p2 output
您的直接过程调用是正确的,这就是为什么它 return 是正确的值。如果你在没有 output
的情况下调用你的过程,它也会 return 0
。
exec [dbo].[usp_GetOrders] @order_date='2015-05-07 12:37:14.579',@output_param=@p2
我从两个查询中得到不同的 outputParam 结果。第一个由 entity framework 生成,它为 outputParam 提供 0。因为第二个结果是 5.
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',@output_param=@p2 output
select @p2 AS outputParam
declare @p2 int
set @p2=0
exec [dbo].[usp_GetOrders] @order_date='2015-05-07 12:37:14.579',@output_param=@p2 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
原因是你在使用sp_executesql
调用过程时缺少output
。
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',@output_param=@p2 output
您的直接过程调用是正确的,这就是为什么它 return 是正确的值。如果你在没有 output
的情况下调用你的过程,它也会 return 0
。
exec [dbo].[usp_GetOrders] @order_date='2015-05-07 12:37:14.579',@output_param=@p2