Sql 以标量值表示的用户定义函数返回语句
我有一个包含以下列的表:Sql 以标量值表示的用户定义函数返回语句,sql,sql-server,user-defined-functions,Sql,Sql Server,User Defined Functions,我有一个包含以下列的表: CREATE TABLE [dbo].[TblPerson]( [Id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](30) NULL, [Family] [nvarchar](40) NULL, [address] [nvarchar](200) NULL, [MeliCode] [char](10) NOT NULL, [IsActive] [bit] NULL CO
CREATE TABLE [dbo].[TblPerson](
[Id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](30) NULL,
[Family] [nvarchar](40) NULL,
[address] [nvarchar](200) NULL,
[MeliCode] [char](10) NOT NULL,
[IsActive] [bit] NULL CONSTRAINT [DF_TblPerson_IsActive] DEFAULT ((0)),
[Count] [int] NULL CONSTRAINT [DF_TblPerson_Count] DEFAULT ((0)),
CONSTRAINT [PK_TblPerson] PRIMARY KEY CLUSTERED
(
现在我想写一个UDF,它将Melicode作为输入参数,如果IsActive=1,则UDF返回count的值,否则UDF必须返回0。
我将以下函数编写为
CREATE FUNCTION ReturnMelli ( @Melicode CHAR(10) )
RETURNS INT
AS
BEGIN
DECLARE @RESULT BIT
SET @RESULT = ( SELECT Isactive
FROM TblPerson
WHERE MeliCode = @Melicode
)
DECLARE @R INT
SET @R = ( SELECT [Count]
FROM TblPerson
WHERE MeliCode = @Melicode
)
IF ( @RESULT = 1 )
BEGIN
RETURN @R
END
ELSE
BEGIN
RETURN 0
END
END
然后,在运行UDF时会出现问题
Msg 455, Level 16, State 2, Procedure ReturnMelli, Line 17
The last statement included within a function must be a return statement.
我不明白失败的原因。即使我把返回值放在最后,它也不起作用
像这样试试
CREATE FUNCTION ReturnMelli ( @Melicode CHAR(10) )
RETURNS INT
AS
BEGIN
DECLARE @RESULT BIT
SET @RESULT = ( SELECT Isactive
FROM TblPerson
WHERE MeliCode = @Melicode
)
DECLARE @R INT
SET @R = ( SELECT [Count]
FROM TblPerson
WHERE MeliCode = @Melicode
)
IF ( @RESULT <> 1 )
BEGIN
SET @R =0
END
RETURN @R
END
替换这个
IF ( @RESULT = 1 )
BEGIN
RETURN @R
END
ELSE
BEGIN
RETURN 0
END
用这个
RETURN IIF(@RESULT = 1, @R, 0)
删除ELSE并检查它是否工作,但我不明白为什么IF语句在逻辑上是错误的?您的语句在逻辑上不是错误的-因为错误消息说函数中包含的最后一条语句必须是return语句。在代码中,最后一条语句是END