【问题标题】:How to execute function in SQL Server 2008如何在 SQL Server 2008 中执行函数
【发布时间】:2014-01-26 00:59:02
【问题描述】:

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

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

我执行时的错误是:

消息 2714,级别 16,状态 3,过程 Afisho_rankimin,第 11 行
数据库中已经有一个名为“Afisho_rankimin”的对象。

还有人说:

找不到列“dbo”,或用户定义的函数,或聚合“dbo.Afisho_rankimin”,或名称不明确

【问题讨论】:

  • 您是否有另一个具有不同类型名称的对象?在 sys.objects 中查找具有该名称的内容。

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


【解决方案1】:

您的数据库中似乎还有其他名为 Afisho_rankimin 的东西,因此没有创建该函数。尝试调用其他函数。例如

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 

【讨论】:

  • 看起来选择引发了一个错误,但没有这样的功能。
  • 我看到显然还有别的东西叫那个名字。会修改答案
  • 我也试过SELECT myfunctionname .......,但它给了我Invalid column name的错误
【解决方案2】:

这个问题和下面的问题我都来过好几次了。

how to call scalar function in sql server 2008

每次,我都尝试使用 SQL Server Management Studio 或 SSMS 中显示的语法输入函数以查看结果,并且每次都收到错误。

对我来说,那是因为我的结果集是表格数据格式。因此,要在 SSMS 中查看结果,我必须这样称呼它:

SELECT * FROM dbo.Afisho_rankimin_TABLE(5);

我了解作者的问题涉及到一个标量函数,所以这个答案只是为了帮助其他经常遇到查询问题时来 StackOverflow 的人(比如我)。

我希望这对其他人有所帮助。

【讨论】:

    【解决方案3】:

    你可能在此之前创建函数, 再次使用更新您的功能。

    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
    

    【讨论】:

    • 如果最初创建的函数是为了不同的东西,甚至可能是由其他人创建的,那么这是一个危险的建议。除非您已经确切知道它的作用,否则您永远不应该更改函数或存储过程或表或视图。
    猜你喜欢
    • 1970-01-01
    • 2017-03-14
    • 2022-01-27
    • 2011-05-28
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多