我必须创建一个函数来计算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'不是公认的内置函数名称。
答案 0 :(得分:1)
尝试使用您的架构名称调用它:SELECT schema.fnNetOwed(98)
答案 1 :(得分:1)
必须使用2个部件名称调用SQL Server标量用户定义的函数。如果尝试使用1部件名称调用函数,则会看到此错误。你能检查一下这是不是问题吗?
所以如果你的函数名是" function1"并在dbo架构中定义,然后代替
"选择function1()"你应该把它称为"选择dbo.function1()"