0

私は使用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

2番目のクエリを実行すると、値が返されます。つまり、3の量

ただし、最初のクエリを実行すると、数量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のカウントを返し、もう一方が返さないのですか?何か案は?

4

1 に答える 1

4

その理由はvarchar、関数定義に長さがないためです。

varchar(8000)のようなもの、またはニーズに合う十分な数に変更してみてください。

于 2012-12-13T15:25:58.237 に答える