Как выполнить функцию в 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