There is something which is amiss here. The code you sent me had no parameters or variables. However, the plans you posted has:
<ColumnReference Column="@inWorksheetPk" ParameterCompiledValue="'87fbac050a07009a3aa818b91059edc9'" ParameterRuntimeValue="'87fbac050a07009a3aa818b91059edc9'" />
<ColumnReference Column="@inExcelLibraryId" ParameterCompiledValue="(24.)" ParameterRuntimeValue="(24.)" />
A quick glance indicates that the plans are for a similar query to the queries you mailed me, so I guess you played around.
Nevertheless, it is difficult to help with conflicting information.
When you ran the code with parameters/variables, did you get a noticeable difference in performance? Or do you only get that when you run without parameters? What difference are we talking about?
Can you post the code to the user-defined function? (It's much better to post the code here than mailing it to individuals, so that others can join in.)
[font="Times New Roman"]Erland Sommarskog, SQL Server MVP, www.sommarskog.se[/font]