È una funzione con valori di tabella. Quindi probabilmente intendevi:
SELECT p.DOCTORFISTNAME, p.DOCTORLASTNAME, t.FirstName, t.Middle, t.LastName
FROM dbo.[PracticeandPhysician] AS p
CROSS APPLY dbo.fnParseName(p.DOCTORFIRSTNAME + ' ' + p.DOCTORLASTNAME);
Nota che non puoi dire:
SELECT dbo.TableValueFunction('foo');
Non più di quanto potresti dire:
SELECT dbo.Table;
--or
SELECT dbo.View;
Puoi, tuttavia, dire:
SELECT * FROM dbo.fnParseName('foo bar');
--or
SELECT FirstName, Middle, LastName FROM dbo.fnParseName('foo bar');
(Non che io abbia convalidato che la tua funzione faccia ciò che pensi o lo faccia in modo efficiente.)
Per favore usa sempre il dbo.
prefisso
come altri hanno suggerito.