我收到这个错误:
Msg 195,Level 15,State 10,Line 1
‘fnParseName’ is not a recognized built-in function name.
在这个查询中:
SELECT fnParseName(DOCTORFIRSTNAME+' ' +DOCTORLASTNAME) FROM [PracticeandPhysician]
这是fnParseName的代码
create FUNCTION [dbo].[fnParseName] (@FullName NVARCHAR(128)) RETURNS @FullNameParts TABLE (FirstName NVARCHAR(128),Middle NVARCHAR(128),LastName NVARCHAR(128)) AS BEGIN ... function body that populates @FullNameParts ... RETURN END
为什么我得到这个错误?
解决方法
这是一个表值函数.所以你可能意味着:
SELECT p.DOCTORFISTNAME,p.DOCTORLASTNAME,t.FirstName,t.Middle,t.LastName FROM dbo.[PracticeandPhysician] AS p CROSS APPLY dbo.fnParseName(p.DOCTORFIRSTNAME + ' ' + p.DOCTORLASTNAME);
请注意,你不能说:
SELECT dbo.TableValueFunction('foo');
你可以说:
SELECT dbo.Table; --or SELECT dbo.View;
但是,你可以说:
SELECT * FROM dbo.fnParseName('foo bar'); --or SELECT FirstName,Middle,LastName FROM dbo.fnParseName('foo bar');
(不是我已经验证你的功能做你想的,或者这样做有效)
请其他人建议always use the dbo.
prefix.