2011-08-31 65 views
0

[CheckAtomicResultCriteria]是一个返回BIT的标量值函数。在另一个UDF中使用ScarlaValue函数返回值

我想在另一个TableValue函数的where子句中使用该函数。像下面一样,但不起作用。什么是使用这个的正确方法?

WHERE [CheckAtomicResultCriteria](parameters) = '1' 

无论这个作品

WHERE (SELECT [CheckAtomicResultCriteria](parameters)) = '1' 
+0

什么是错误讯息明确?你是否使用模式为你的UDF加上了前缀(WHERE dbo.CheckAtomicResultCriteria(parms)='1') –

+0

@Derek Kromm:感谢您对此进行研究。一旦我添加dbo前缀,奇怪的是它起作用。我在没有dbo前缀的同一UDF中使用表值函数,并且工作正常。你有什么主意吗?我可以选择你的答案,如果你可以发布这个答案? – CharithJ

回答

1

当执行UDF,你必须前缀模式。

所以你需要调用它像这样:

WHERE dbo.CheckAtomicResultCriteria(parms) = '1' 
+0

在同一个数据库中,在同一个UDF中,我成功调用了不同的TableValueFunction,而没有指定dbo前缀。任何想法? – CharithJ

+1

标量值函数需要模式前缀 - 表值函数不需要。就是这样。 –

+0

我会补充说,不管它是什么类型的对象,或者你是创建对象还是仅仅引用对象,你都应该始终使用正确的模式前缀前缀所有对象。 –

相关问题