我正在使用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的计数而另一个不返回?有什么想法吗?
答案 0 :(得分:4)
原因是你的函数定义中varchar
没有长度。
尝试将其更改为varchar(8000)
或类似的数字,以满足您的需求。