0
我在2012年SSMS的工作,我有以下标量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以下查询的WHERE子句中:
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'变量和你使用的参数 – 2014-10-10 05:04:29