Hoe functie uit te voeren in SQL Server 2008

Ik bouw een functie en ik probeer deze uit te voeren…maar er treden enkele fouten op

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

De fouten wanneer ik het uitvoer zijn:

Bericht 2714, niveau 16, staat 3, procedure Afisho_rankimin, regel 11
Er is al een object met de naam ‘Afisho_rankimin’ in de database.

en er wordt ook gezegd dat:

Kan kolom “dbo”, of de door de gebruiker gedefinieerde functie, of aggregaat “dbo.Afisho_rankimin” niet vinden of de naam is dubbelzinnig


Antwoord 1, autoriteit 100%

Het lijkt erop dat er iets anders is met de naam Afisho_rankiminin uw database, dus de functie wordt niet gemaakt. Probeer uw functie iets anders aan te roepen. Bijv.

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

Houd er rekening mee dat u dit maar één keer hoeft aan te roepen, niet elke keer dat u de functie aanroept. Probeer daarna te bellen

SELECT dbo.Afisho_rankimin1(5) AS Rankimi 

Antwoord 2, autoriteit 68%

Ik ben meerdere keren op deze vraag en die hieronder gekomen.

hoe de scalaire functie in sql server 2008 aan te roepen

Elke keer probeer ik de functie in te voeren met behulp van de syntaxis die hier wordt weergegeven in SQL Server Management Studio, of SSMS, om de resultaten te zien, en elke keer krijg ik de fouten.

Voor mij is dat omdat mijn resultatenset in tabelvorm is. Daarom, om de resultaten in SSMS te zien, moet ik het zo noemen:

SELECT * FROM dbo.Afisho_rankimin_TABLE(5);

Ik begrijp dat de vraag van de auteur een scalaire functie betrof, dus dit antwoord is alleen bedoeld om anderen te helpen die vaak naar StackOverflow komen als ze een probleem hebben met een vraag (zoals ik).

Ik hoop dat dit anderen helpt.


Antwoord 3, autoriteit 6%

het kan zijn dat u eerder de functie maakt,
update uw functie opnieuw met.

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

Other episodes