Функция SQL в хранимой процедуре не работает
В хранимой процедуре я пытаюсь использовать функцию.
Код ниже:
SELECT TOP 4 refFeatured, [Type], [Order], fn_cms_featured_image(refFeatured,[Type],@refLanguage) AS FeaturedImage, fn_cms_featured_name(refFeatured,[Type],@refLanguage) AS Name FROM FEATURED ORDER BY [Order] ASC
Я написал функцию, но не работал.
'fn_cms_featured_image' не является признанным именем функции.
ошибка выше. Где я могу ошибаться.
функции – скалярнозначные функции.
ALTER FUNCTION [dbo].[fn_cms_featured_image] ( @iNumber int,@type nvarchar(20),@lang int ) RETURNS nvarchar(50) AS BEGIN DECLARE @image nvarchar(100) IF @type ='Category' SET @image = (SELECT TOP 1 c.Icon FROM CATEGORY c WHERE [email protected]) ELSE SET @image = (SELECT TOP 1 pl.DefaultImage FROM PRODUCT_IMAGE_LOCALIZED pl WHERE [email protected] AND [email protected]) RETURN (@image) END
Добавить имя схемы [dbo].
перед именем функции.
SELECT TOP 4 refFeatured, [Type], [Order], [dbo].fn_cms_featured_image(refFeatured,[Type],@refLanguage) AS FeaturedImage, [dbo].fn_cms_featured_name(refFeatured,[Type],@refLanguage) AS Name FROM FEATURED ORDER BY [Order] ASC
Посмотрите на это сообщение: Почему префикс схемы (dbo) является обязательным, когда мы вызываем функцию?
Имя функции пользователя должно вызываться с именем схемы. Попробуйте написать SELECT dbo.fn_cms_featured_image(...
Пытаться
Select item from fn_cms_featured_image(refFeatured,[Type],@refLanguage) AS FeaturedImage
вместо прямого вызова
fn_cms_featured_image(refFeatured,[Type],@refLanguage) AS FeaturedImage
-- While selecting function name IN select query always select dbo.function name. SELECT TOP 4 refFeatured, [Type], [Order], dbo.fn_cms_featured_image(refFeatured,[Type], @refLanguage) AS FeaturedImage, dbo.fn_cms_featured_name(refFeatured, [Type], @refLanguage) AS Name FROM FEATURED ORDER BY [Order] ASC