我正在执行类似于以下
的SQL查询SELECT fn.FullName, pn.LastName, pn.FirstName, pn.MI
FROM Source.dbo.tblPerson fn
cross apply dbo.ParseFullName(fn.FullName) pn
对于前面的85行,结果看起来很好86th +对于从UDF派生的列总是具有NULL。如果我添加where或order by子句来更改结果集,则始终是返回完整结果集的前85行。因为85号是如此一致,我认为这是我忽略的东西。
任何人都可以提供任何帮助都很棒
答案 0 :(得分:1)
尝试使用外部应用替换交叉应用。确保你的Sql不会在NULL上出错。
SELECT fn.FullName, pn.LastName, pn.FirstName, pn.MI
FROM Source.dbo.tblPerson fn
OUTER APPLY dbo.ParseFullName(fn.FullName) pn
答案 1 :(得分:1)
我弄清楚问题是什么。正在调用的UDF,根据示例,dbo.ParseFullName是调用OLE自动化对象。显然,我没有通过sp_OADestroy正确销毁对象。我正在销毁初始对象,但不是所有派生对象。一旦我在UDF结束时解决了这个问题,我开始按预期获得所有结果。感谢您的帮助。