Функция SQL: Результат пуст - PullRequest
0 голосов
/ 21 октября 2019

Я создал функцию, используя эти: -

CREATE Function dbo.FuncDailyInOut_AA_20190401 
    (@Date1 AS DATE,
     @Date2 AS DATE,
     @Outlet AS CHAR)
RETURNS TABLE
AS
    RETURN  
        (SELECT 
             afldat AS DATE, kstdrcode AS OUTLET, artcode AS ITEMCODE, 
             oms45 AS DESCRIPTION, aant_gelev AS QTY, unitcode AS UOM 
         FROM 
             orsrg 
         WHERE 
             artcode NOT IN ('10', 'NULL', 'O', 'S', '999-9008')
             AND afldat BETWEEN @Date1 AND @Date2 -- Parameter 1 & 2
             AND kstdrcode = @Outlet    --= 'CTP' --Parameter 3
        )

У меня есть оператор выбора, который при выполнении возвращает 1243 строки, однако, когда я использую функцию, она не показывает никакого результата: -

SELECT * 
FROM dbo.FuncDailyInOut_AA_20190401 ('2019-02-02', '2019-02-28', 'CTP')

Я что-то упустил? Заранее спасибо.

1 Ответ

1 голос
/ 21 октября 2019

Никогда использовать типы символов в SQL Server без длины. Значение по умолчанию зависит от контекста и часто не соответствует ожидаемому.

Это:

@Outlet as char

действительно:

@Outlet as char(1)

Вы передаете 'CTP',но функция только получает 'C'.

Вместо этого используйте что-то вроде:

@Outlet as varchar(255)
...