我有以下代码,语法某处不正确,
CREATE FUNCTION [dbo].[Greeting](@Name [varchar])
RETURNS [int] AS
BEGIN
Declare @Gender varchar
Declare @Greeting varchar
select @Gender = Gender from [NameData].[dbo].[Names] where Name = @Name
select @Greeting = (case when @Gender = 'Female' then 'Ms.' else 'Mr.');
RETURN @Greeting
END
GO
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
Incorrect syntax near ')'.
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
谢谢
你错过了end你的case陈述.可能更重要的是,您没有使用长度规格varchar.在SQL Server中始终使用长度规范.默认值取决于上下文 - 在此上下文中,值为1,这将产生不正确的结果.
您还应该用分号结束语句.并且,修复返回值,因为您似乎没有返回整数.所以:
CREATE FUNCTION [dbo].[Greeting](
@Name varchar(255)
)
RETURNS varchar(255) AS
BEGIN
Declare @Gender varchar(255);
Declare @Greeting varchar(255);
select @Gender = Gender from [NameData].[dbo].[Names] where Name = @Name ;
select @Greeting = (case when @Gender = 'Female' then 'Ms.' else 'Mr.' end);
RETURN @Greeting;
END;
Run Code Online (Sandbox Code Playgroud)
你确实意识到所有未被识别的名字都将被给予"先生"的"问候".我认为那是故意的.此外,该功能可以简化,但我尽可能地遵循您的原始逻辑.