如何在SQL Server 2008中执行函数

use*_*650 25 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
Run Code Online (Sandbox Code Playgroud)

执行它时的错误是:

Msg 2714,Level 16,State 3,Procedure Afisho_rankimin,Line 11
数据库中已经有一个名为'Afisho_rankimin'的对象.

而且据说:

找不到列"dbo",或用户定义的函数,或聚合"dbo.Afisho_rankimin",或者名称含糊不清

Yur*_*ter 25

看起来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
Run Code Online (Sandbox Code Playgroud)

请注意,您只需要调用一次,而不是每次调用该函数.之后尝试打电话

SELECT dbo.Afisho_rankimin1(5) AS Rankimi 
Run Code Online (Sandbox Code Playgroud)

  • 看起来选择引发了一个错误,即没有这样的功能. (2认同)

jp2*_*ode 16

我已经多次来到这个问题了.

如何在sql server 2008中调用标量函数

每次,我尝试使用SQL Server Management Studio或SSMS中显示的语法输入函数,以查看结果,每次出现错误.

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

SELECT * FROM dbo.Afisho_rankimin_TABLE(5);
Run Code Online (Sandbox Code Playgroud)

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

我希望这有助于其他人.