Sql server 存储过程中的SQL函数不工作
在存储过程中,我尝试使用函数 代码如下:Sql server 存储过程中的SQL函数不工作,sql-server,function,stored-procedures,Sql Server,Function,Stored Procedures,在存储过程中,我尝试使用函数 代码如下: 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
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\u cms\u特色图像”不是可识别的函数名
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
出现上述错误。我在哪里犯错误
函数是标量值函数
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
调用用户函数的名称前应加上架构名称。
尝试写入
选择dbo.fn\u cms\u特色图像(…
在函数名前面添加架构名[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
看看这篇文章:试试看
Select item from fn_cms_featured_image(refFeatured,[Type],@refLanguage) AS FeaturedImage
而不是直接打电话
fn_cms_featured_image(refFeatured,[Type],@refLanguage) AS FeaturedImage
我还建议不要在代码中使用标量函数,它们是性能瓶颈,请使用内联表值函数重写它们。您的问题是否通过任何一个答案得到解决,或者问题仍然存在?