我构建了一个函数,我正在尝试执行它......但是正在发生一些错误
CREATE FUNCTION dbo.Afisho_rankimin(@emri_rest int)
RETURNS int
AS
BEGIN
Declare @rankimi int
Select @rankimi=dbo.RESTORANTET.Rankimi
From RESTORANTET
Where dbo.RESTORANTET.ID_Rest=@emri_rest
RETURN @rankimi
END
GO
SELECT dbo.Afisho_rankimin(5)AS Rankimi
GO
执行时的错误是:
Ms 2714,Level 16,State 3,Procedure Afisho_rankimin,Line 11 数据库中已经有一个名为“Afisho_rankimin”的对象。
并且据说:
找不到列“dbo”,或用户定义的函数,或聚合“dbo.Afisho_rankimin”,或者名称不明确
答案 0 :(得分:21)
看起来您的数据库中还有一些名为Afisho_rankimin
的内容,因此未创建该功能。尝试调用你的函数。 E.g。
CREATE FUNCTION dbo.Afisho_rankimin1(@emri_rest int)
RETURNS int
AS
BEGIN
Declare @rankimi int
Select @rankimi=dbo.RESTORANTET.Rankimi
From RESTORANTET
Where dbo.RESTORANTET.ID_Rest=@emri_rest
RETURN @rankimi
END
GO
请注意,您只需要调用一次,而不是每次调用该函数。之后尝试调用
SELECT dbo.Afisho_rankimin1(5) AS Rankimi
答案 1 :(得分:12)
我已经多次来到这个问题了。
how to call scalar function in sql server 2008
每次尝试使用SQL Server Management Studio或SSMS中显示的语法输入函数,以查看结果,并在每次出现错误时进行。
对我来说,这是因为我的结果集是表格数据格式。因此,要在SSMS中查看结果,我必须这样称呼它:
SELECT * FROM dbo.Afisho_rankimin_TABLE(5);
我理解作者的问题涉及标量函数,所以这个答案只是为了帮助那些经常遇到查询问题的人(比如我)来访问StackOverflow。
我希望这有助于其他人。
答案 2 :(得分:2)
你可能之前就是创造功能, 使用。再次更新您的功能。
Alter FUNCTION dbo.Afisho_rankimin(@emri_rest int)
RETURNS int
AS
BEGIN
Declare @rankimi int
Select @rankimi=dbo.RESTORANTET.Rankimi
From RESTORANTET
Where dbo.RESTORANTET.ID_Rest=@emri_rest
RETURN @rankimi
END
GO
SELECT dbo.Afisho_rankimin(5) AS Rankimi
GO