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
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
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.
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