Я работаю в SSMS 2012. У меня есть следующий скалярном UDF:Скалярного UDF не возвращает ожидаемую величину
CREATE FUNCTION [dbo].[test] (@input nvarchar)
RETURNS nvarchar
AS
BEGIN
DECLARE @output nvarchar
SET @output = CASE
WHEN @input IS NULL THEN 'failure'
WHEN @input = '' THEN 'failure'
ELSE 'success'
END
RETURN @output
END
я должен предоставить разрешения на него. Итак, я ввожу:
GRANT EXECUTE ON [dbo].[test] TO Public
Я называю это UDF в ИНЕКЕ следующего запроса:
SELECT
Col1
FROM some_table
WHERE
[dbo].[test](Col2) = 'failure'
В some_table, я знаю, что Col2 имеет записи, которые являются NULL. Итак, эти записи должны были возвратиться, так как вывод из UDF должен быть «сбой». Однако запрос не возвращает никаких записей. Где я иду не так?
[Вредные привычки пинать: объявляя VARCHAR без (длина)] (HTTP: //sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx) - вы должны ** всегда ** предоставлять длину для любого ' переменные varchar и параметры, которые вы используете –