Como executar a função no servidor SQL 2008

Construo uma função e estou a tentar executá-la...mas alguns erros estão ocorrendo

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

os erros quando o executo são:

Msg 2714, Nível 16, Estado 3, Procedimento Afisho_rankimin, Linha 11
Já existe um objecto chamado "Afisho_rankimin" na base de dados.

e também se diz que:

não é possível encontrar a coluna "dbo", ou a função definida pelo utilizador, ou agregada " dbo.Afisho_rankimin", ou o nome é ambíguo

Author: marc_s, 2014-01-26

3 answers

Parece que há outra coisa chamada {[[2]} no seu DB, por isso a função não está a ser criada. Tenta chamar à tua função outra coisa. Por exemplo

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

Note que você precisa chamar isso apenas uma vez, não todas as vezes que você chama a função. Depois disso tenta ligar.

SELECT dbo.Afisho_rankimin1(5) AS Rankimi 
 13
Author: Yuriy Galanter, 2014-01-26 02:03:12
Cheguei a esta questão e à que se segue várias vezes.

Como chamar a função scalar no servidor sql 2008

De cada vez, eu tento introduzir a função usando a sintaxe mostrada aqui no SQL Server Management Studio, ou SSMS, para ver os resultados, e cada vez que eu recebo os erros.

Para mim, isso é porque o meu conjunto de resultados está no formato de dados tabulares. Portanto, para ver os resultados em SSMS, tenho que chamá-lo assim:

SELECT * FROM dbo.Afisho_rankimin_TABLE(5);

Eu entendo que o a pergunta do autor envolveu uma função escalar, então esta resposta é apenas para ajudar os outros que vêm para StackOverflow muitas vezes quando eles têm um problema com uma consulta (Como eu).

Espero que isto ajude os outros.
 9
Author: jp2code, 2017-05-23 10:31:22

Você pode ser Criar função antes disso, actualize a sua função novamente usando.

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
 1
Author: Almostafa, 2014-12-06 08:23:24