如何在SQL Server 2008中执行函数

时间:2014-01-26 00:59:02

标签: sql sql-server sql-server-2008

我构建了一个函数,我正在尝试执行它......但是正在发生一些错误

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”,或者名称不明确

3 个答案:

答案 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