É uma função com valor de tabela. Então você provavelmente quis dizer:
SELECT p.DOCTORFISTNAME, p.DOCTORLASTNAME, t.FirstName, t.Middle, t.LastName
FROM dbo.[PracticeandPhysician] AS p
CROSS APPLY dbo.fnParseName(p.DOCTORFIRSTNAME + ' ' + p.DOCTORLASTNAME);
Observe que você não pode dizer:
SELECT dbo.TableValueFunction('foo');
Mais do que você poderia dizer:
SELECT dbo.Table;
--or
SELECT dbo.View;
Você pode, no entanto, dizer:
SELECT * FROM dbo.fnParseName('foo bar');
--or
SELECT FirstName, Middle, LastName FROM dbo.fnParseName('foo bar');
(Não que eu tenha validado que sua função faz o que você pensa ou faz com eficiência.)
Por favor, sempre use o
dbo.
prefixo
como outros sugeriram.