在存储过程中,我尝试使用函数。
以下代码:
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 c.Id=@iNumber)
ELSE
SET @image = (SELECT TOP 1 pl.DefaultImage FROM PRODUCT_IMAGE_LOCALIZED pl WHERE pl.refLanguage=@lang AND pl.refProduct=@iNumber)
RETURN (@image)
END
答案 0 :(得分:2)
在函数名称前面添加模式名称 [dbo]。
。
SELECT TOP 4 refFeatured,&#xA ; [类型],
 [订单],
 [dbo] .fn_cms_featured_image(refFeatured,[Type],@ refLanguage)AS FeaturedImage,
 [dbo] .fn_cms_featured_name(refFeatured,[Type],@ refLanguage)AS名称
 FROM FEATURED
 ORDER BY [Order] ASC


&# xA; 看一下这篇文章:为什么在调用函数时必须使用模式前缀(dbo)?一>

答案 1 :(得分:1)
应该在模式名称前面调用用户函数的名称。
尝试编写 SELECT dbo.fn_cms_featured_image(...
答案 2 :(得分:0)
尝试
Select item from fn_cms_featured_image(refFeatured,[Type],@refLanguage) AS FeaturedImage
而非直接电话
fn_cms_featured_image(refFeatured,[Type],@refLanguage) AS FeaturedImage
答案 3 :(得分:0)
-- 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