2014-01-26 4 views
10

Я создаю функцию, и я пытаюсь выполнить его ... но некоторые ошибки происходятКак выполнить функцию в 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», или имя неоднозначна

+0

Пожалуйста, кто-нибудь там, чтобы помочь мне? – user3233650

+0

У вас есть другой объект с этим именем другого типа? Посмотрите в sys.objects для чего-то с этим именем. –

ответ

12

Похоже, в вашей БД есть что-то еще, называемое Afisho_rankimin, поэтому функция не создается. Попробуйте назвать свою функцию чем-то еще. Например.

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

SELECT dbo.Afisho_rankimin1(5) AS Rankimi 
+1

Похоже, что выбор поднимает ошибку, что нет такой функции. –

+0

Я вижу, видимо, что-то еще называется этим именем. Будет ли пересматривать ответ –

+0

Я также пробовал с 'SELECT myfunctionname .......', но он дает мне ошибку как' Invalid column name' – BNN

1

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

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 
+3

Это опасный совет, если первоначально созданная функция для чего-то другого и, возможно, даже была созданный кем-то другим. Вы никогда не должны изменять функцию или хранимую процедуру proc или table или view, если вы уже не знаете точно, что она делает. – HLGEM

8

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

how to call scalar function in sql server 2008

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

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

SELECT * FROM dbo.Afisho_rankimin_TABLE(5); 

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

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

Смежные вопросы