Как выполнить функцию в 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  [email protected]_rest
       RETURN @rankimi
  END
  GO
    SELECT dbo.Afisho_rankimin(5)AS Rankimi
  GO

Ошибки при выполнении:

Msg 2714, уровень 16, состояние 3, процедура Afisho_rankimin, строка 11
В базе данных уже есть объект с именем "Afisho_rankimin".

а также сказано, что:

Невозможно найти столбец "dbo" или пользовательскую функцию или заполнить "dbo.Afisho_rankimin", или это имя неоднозначно

Ответ 1

Похоже, там что-то еще называется 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  [email protected]_rest
       RETURN @rankimi
  END
  GO

Обратите внимание, что вам нужно вызывать это только один раз, не каждый раз, когда вы вызываете функцию. После этого попробуйте позвонить

SELECT dbo.Afisho_rankimin1(5) AS Rankimi 

Ответ 2

Я пришел к этому вопросу, а другой - несколько раз.

как вызвать скалярную функцию в SQL Server 2008

Каждый раз я пытаюсь ввести функцию, используя синтаксис, показанный здесь в SQL Server Management Studio или SSMS, для просмотра результатов и каждый раз, когда я получаю ошибки.

Для меня это потому, что мой результирующий набор находится в формате табличных данных. Поэтому, чтобы увидеть результаты в SSMS, я должен назвать это следующим образом:

SELECT * FROM dbo.Afisho_rankimin_TABLE(5);

Я понимаю, что вопрос автора включал скалярную функцию, поэтому этот ответ должен только помочь другим, которые часто бывают в StackOverflow, когда у них есть проблема с запросом (например, я).

Я надеюсь, что это поможет другим.

Ответ 3

вы можете создать функцию до этого, снова обновите свою функцию, используя.

Alter FUNCTION dbo.Afisho_rankimin(@emri_rest int)
RETURNS int
AS
  BEGIN
     Declare @rankimi int
     Select @rankimi=dbo.RESTORANTET.Rankimi
     From RESTORANTET
     Where  [email protected]_rest
     RETURN @rankimi
END
GO

SELECT dbo.Afisho_rankimin(5) AS Rankimi
GO