【问题标题】:TSQL: Incorrect syntax near function nameTSQL:函数名附近的语法不正确
【发布时间】:2015-03-18 10:29:39
【问题描述】:

我有这个:(更新)

IF OBJECT_ID (N'dbo.fn_getProductCatPurchased', N'IF') IS NOT NULL
DROP FUNCTION [dbo].fn_getProductCatPurchased;
GO

然后函数开始:

CREATE FUNCTION [dbo].fn_getProductCatPurchased
(
@Custno varchar(100), 
@PriceType varchar(100)
)

RETURNS int 
AS 

BEGIN
    DECLARE @groups int;
    SELECT @groups = COUNT(DISTINCT(prodcat)) 
    FROM SALES 
    WHERE custno = @Custno 
        AND pricetype=@PriceType
     IF (@group IS NULL) 
        SET @group = 0;
    RETURN @group;
  END;
  GO

当我尝试保存函数时,抛出了一个错误:

Incorrect syntax near fn_getProductCatPurchased

我做错了什么?

【问题讨论】:

  • 还有其他东西会产生这个错误,你自己提供的代码完全符合我执行它时应该做的。请提供有关您正在做什么的更多信息。
  • 您是从 SQL Server Management Studio 还是其他地方执行此操作? GO 不是 T-SQL。
  • 我现在已经更新了代码。如果我删除 GO - 它是一样的 :)
  • 对我来说编译成功。
  • 您正在尝试删除内联表函数,但您的函数未返回表。尝试使用 FN OBJECT_ID (N'dbo.fn_getProductCatPurchased', N'FN') IS NOT NULL

标签: sql-server tsql


【解决方案1】:

不确定这是否是您的错误的原因,但这绝对是一个问题。

您正在声明一个名为 @groups 的变量:

DECLARE @groups int;

但继续使用@group 而不使用s

IF (@group IS NULL) 
    SET @group = 0;
RETURN @group;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 2015-12-12
    • 2013-12-16
    • 1970-01-01
    • 2018-08-14
    • 2011-03-11
    • 2014-02-16
    相关资源
    最近更新 更多