如何解决EREQUEST'END'附近的语法不正确
我创建了一个简单的SQL Server函数。添加IF Else
块后,它开始显示错误:
EREQUEST'END'附近的语法不正确
尽管代码看起来很直接,并且也浏览了多个论坛帖子,但我无法弄清楚问题出在哪里。请帮忙。
CREATE FUNCTION Detect_Subscription(@ID INT) RETURNS VARCHAR(20)
BEGIN
DECLARE @Status INT,@customer VARCHAR(20);
SELECT @Status = COUNT(*) FROM premium WHERE premium.user_id = @ID;
IF @Status > 0 THEN SET @customer = 'Premium';
ELSE SET @customer = 'Free';
END IF;
RETURN @customer;
END
解决方法
您的功能似乎适合SQL Server。
您可以简化功能,如下所示:
CREATE FUNCTION Detect_Subscription(@ID INT) RETURNS VARCHAR(20)
BEGIN
DECLARE @customer VARCHAR(20);
SELECT
@Customer =
CASE
WHEN COUNT(1) > 0 THEN 'Premium'
ELSE 'Free'
END
FROM premium WHERE premium.user_id = @ID;
RETURN @customer;
END
,
我认为使用IF
很好。我只需将其与EXISTS
配对:
CREATE FUNCTION Detect_Subscription (
@ID INT
) RETURNS VARCHAR(20) AS
BEGIN
DECLARE @customer VARCHAR(20);
IF (EXISTS (SELECT 1 FROM premium p WHERE p.user_id = @ID))
BEGIN
SET @customer = 'Premium';
END;
ELSE SET @customer = 'Free';
RETURN @customer;
END;
如果给定用户在COUNT(*)
中可以有多行,这比premium
快一点(如果不可能,则要快几分之一纳米)。
重要点:
- SQL Server没有
END IF
。 - SQL Server在定义函数时需要
AS
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。