web-dev-qa-db-fra.com

Comment exécuter une fonction dans SQL Server 2008

Je construis une fonction et j'essaye de l'exécuter ... mais des erreurs se produisent

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

Les erreurs quand je l'exécute sont:

Msg 2714, Niveau 16, Etat 3, Procédure Afisho_rankimin, Ligne 11
Il existe déjà un objet nommé 'Afisho_rankimin' dans la base de données.

et aussi on dit que:

Impossible de trouver la colonne "dbo", ou la fonction définie par l'utilisateur, ou d'agréger "dbo.Afisho_rankimin", ou le nom est ambigu

16
user3233650

Il semble y avoir quelque chose d'autre appelé Afisho_rankimin dans votre base de données, de sorte que la fonction n'est pas créée. Essayez d'appeler votre fonction autrement. Par exemple.

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

Notez que vous devez appeler ceci une seule fois, pas à chaque fois que vous appelez la fonction. Après cela, essayez d'appeler

SELECT dbo.Afisho_rankimin1(5) AS Rankimi 
17
Yuriy Galanter

Je suis venu à cette question et à celle ci-dessous à plusieurs reprises.

comment appeler une fonction scalaire dans SQL Server 2008

Chaque fois, j'essaie d'entrer dans Function en utilisant la syntaxe indiquée ici dans SQL Server Management Studio, ou SSMS, pour voir les résultats et chaque fois que je reçois les erreurs.

Pour moi, c'est parce que mon jeu de résultats est au format de données tabulaire. Par conséquent, pour voir les résultats dans SSMS, je dois l'appeler comme suit:

SELECT * FROM dbo.Afisho_rankimin_TABLE(5);

Je comprends que la question de l'auteur implique une fonction scalaire. Cette réponse est donc uniquement destinée à aider les autres utilisateurs de StackOverflow qui ont souvent des problèmes avec une requête (comme moi).

J'espère que cela aide les autres.

12
jp2code

vous pouvez créer une fonction avant, alors, mettez à jour votre fonction à nouveau en utilisant.

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
2
Almostafa