SQL函数返回与普通查询不同

时间:2012-12-13 15:20:11

标签: sql count sql-server-2008-r2 user-defined-functions

我正在使用SQL Server 2008R2,我有以下脚本。

select * from orderSummaryTotal(@orderid,@sessionid)

select
    count(*) as Quantity,
    IsNull(Sum(VatAmount),0) As VATAmount,
    IsNull(Sum(NetAmount),0) As NetAmount,
    IsNull(Sum(GrossAmount),0) as GrossAmount
from tbOrderProduct
where
     Orderid = @orderid
 and sessionid = @sessionid

当我运行第二个查询时,它会返回值。即数量为3

然而,当我运行第一个Query时,它返回的数量为0。

第一个查询是表值函数这是代码。

ALTER FUNCTION [dbo].[OrderSummaryTotal](@orderid varchar, @sessionid uniqueidentifier)
RETURNS TABLE as
RETURN
  select
      count(*) as Quantity,
      IsNull(Sum(VatAmount),0) As VATAmount,
      IsNull(Sum(NetAmount),0) As NetAmount,
      IsNull(Sum(GrossAmount),0) as GrossAmount
  from tbOrderProduct
  where
       Orderid = @orderid
   and sessionid = @sessionid

两个查询都是相同的,但是为什么一个返回3的计数而另一个不返回?有什么想法吗?

1 个答案:

答案 0 :(得分:4)

原因是你的函数定义中varchar没有长度。

尝试将其更改为varchar(8000)或类似的数字,以满足您的需求。