表值函数不返回数据

时间:2013-10-30 11:14:31

标签: sql-server

测试我的第一个表格值函数,即使SELECT工作,我也没有数据 没有回复任何东西:

select * from GetMvtHistory('C1505 BLACK')

返回正确的数据:

select row_number() OVER (order by DocId) as Id, detailId, Quant, 0 as Cumul
    FROM vwDetailsHist
    WHERE refer = 'C1505 BLACK'
    ORDER BY DocId;

TVF代码:

ALTER FUNCTION [dbo].[GetMvtHistory]
(@Ref char(10))
RETURNS @MvtHist table
(
Id int,
[DetailId] int NULL, 
[Quant] int NULL, 
[Cumul] int NULL
)
WITH EXEC AS CALLER
AS
BEGIN
INSERT into @MvtHist
    select row_number() OVER (order by DocId) as Id, detailId, Quant, 0 as Cumul
        FROM vwDetailsHist
        WHERE refer = @Ref
        ORDER BY DocId;

RETURN 

我缺少什么?谢谢!

2 个答案:

答案 0 :(得分:2)

您已将参数设为char(10)。我无法想象这是您需要的数据类型。您应该使用该列具有的相同数据类型(可能应该是nvarchar)。

'C1505 BLACK'是11个字符。不适合。

答案 1 :(得分:0)

@Ref参数设置为50higher。示例:

@Ref varchar(500)

这将解决您的问题。