我有以下代码,语法某处不正确,
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
我得到的错误是:
Incorrect syntax near ')'.
任何人都可以提供帮助吗?
由于
答案 0 :(得分:6)
您错过了foreach ($A->getAB() as $AB) {
$AB->getB();
}
语句的end
。可能更重要的是,您没有使用case
的长度规格。在SQL Server 始终中使用长度规范。默认值取决于上下文 - 在此上下文中,值为1,这将产生不正确的结果。
您还应该用分号结束语句。并且,修复返回值,因为您似乎没有返回整数。所以:
varchar
你确实意识到所有未被识别的名字都会被给予"问候" "先生"。我认为那是故意的。此外,该功能可以简化,但我尽可能地遵循您原来的逻辑。
答案 1 :(得分:2)
你有
/Users
但是正在尝试返回声明为varchar的@Greeting
并且还缺少案例陈述的结尾。
答案 2 :(得分:2)
您在案件陈述中遗漏了END
:
CREATE FUNCTION [dbo].[Greeting] (@Name [varchar(255)])
RETURNS [int] --also this will need to be changed to varchar()
AS
BEGIN
DECLARE @Gender VARCHAR(255) --added varchar length
DECLARE @Greeting VARCHAR(255) --added varchar length
SELECT @Gender = Gender
FROM [NameData].[dbo].[Names]
WHERE NAME = @Name
SELECT @Greeting = (
CASE
WHEN @Gender = 'Female'
THEN 'Ms.'
ELSE 'Mr.'
END --added this
);
RETURN @Greeting
END
GO