为什么我说我的功能甚至不存在,甚至认为功能是创建的?

时间:2016-10-22 01:43:45

标签: sql-server-2012

我必须创建一个函数来计算invoiceID,InvoiceTotal - PaymentTotal - CreditTotal。所以我创建了一个名为fnNetOwed的函数。我必须用这种语法运行它:

Select invoiceId, dbo.fnNetOwed(invoiceid) from invoices
Where dbo.fnNetOwed (invoiceid) >0

得到与我一样的结果

 Select invoiceID,InvoiceTotal - PaymentTotal - CreditTotal From     Invoices 
Where InvoiceTotal - PaymentTotal - CreditTotal>0

这是我创建它的代码:     创建功能fnNetOwed     (@GetInvoiceId Money)     RETURNS Int

BEGIN
RETURN     (SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS 'OWED'
        FROM Invoices
        WHERE @GetInvoiceID = Invoices.InvoiceID);
END 
GO

这就是我用来调用它/执行的东西:     从发票中选择InvoiceId,fnNetOwed(98)     其中fnNetOwed(98)> 0; 这是我运行时得到的错误:

  

Msg 195,Level 15,State 10,Line 1   'fnNetOwed'不是公认的内置函数名称。

2 个答案:

答案 0 :(得分:1)

尝试使用您的架构名称调用它:SELECT schema.fnNetOwed(98)

答案 1 :(得分:1)

必须使用2个部件名称调用SQL Server标量用户定义的函数。如果尝试使用1部件名称调用函数,则会看到此错误。你能检查一下这是不是问题吗?

所以如果你的函数名是" function1"并在dbo架构中定义,然后代替

"选择function1()"你应该把它称为"选择dbo.function1()"