1

测试我的第一个表值函数,我没有得到任何数据,即使 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 

我错过了什么??谢谢 !

4

2 回答 2

2

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

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

于 2013-10-30T11:16:46.980 回答
0

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

@Ref varchar(500)

这将解决您的问题。

于 2013-10-30T11:26:35.787 回答