【问题标题】:My UDF won't work when I try to use it当我尝试使用它时,我的 UDF 不起作用
【发布时间】:2018-09-08 21:06:12
【问题描述】:

我在这里仍然是一个初学者,但我创建了这个 UDF:

USE NorthWind
GO
IF EXISTS(SELECT name FROM SYSOBJECTS
                 WHERE name='SaleAfterDiscount'
                 AND type ='FN')
BEGIN 
DROP FUNCTION SaleAfterDiscount;
END
GO
CREATE FUNCTION SaleAfterDiscount(@pPrice AS MONEY, @pQty AS SMALLINT, @pDiscount AS REAL)
RETURNS MONEY AS 
BEGIN
DECLARE @SaleAfterDiscount MONEY;
SET @SaleAfterDiscount=(@pPrice*@pQty*(1-@pDiscount));
RETURN @SaleAfterDiscount;
END;

然后我去使用这个 UDF 来获取一个值,我得到这个错误,上面写着“无法绑定多部分标识符”dbo.SaleAfterDiscount。我不确定我做错了什么。有人可以帮忙吗?

【问题讨论】:

  • 你的功能完全坏了。一无所有……没有回报。为什么要发送三个参数来忽略它们?
  • 这里要小心使用真实的。您应该改用小数,因为 real 是一种近似数据类型。
  • 您的IF Exists 不完整。你需要一个结束括号。如上所述。
  • sorry sorry 我打错了代码 我已经修复了
  • 你是如何调用函数的?

标签: sql-server tsql user-defined-functions dbo


【解决方案1】:

由于 CREATE FUNCTION 没有指定架构,它很可能是在不同的架构中创建的(取决于您的用户配置)。

尝试将 CREATE 更改为如下所示

创建函数 dbo. SaleAfterDiscount

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多