【问题标题】:Using a ScarlaValue Function return value in another UDF在另一个 UDF 中使用 ScarlaValue 函数返回值
【发布时间】:2011-08-31 00:13:20
【问题描述】:

[CheckAtomicResultCriteria] 是一个返回 BIT 的标量值函数。

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

WHERE [CheckAtomicResultCriteria](parameters) = '1'

这都不行

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

【问题讨论】:

  • 具体报错信息是什么?您是否在 UDF 前面加上架构 (WHERE dbo.CheckAtomicResultCriteria(parms) = '1')
  • @Derek Kromm:感谢您对此进行调查。奇怪的是,一旦我添加了 dbo 前缀,它就会起作用。我在没有 dbo 前缀的同一个 UDF 中使用表值函数,效果很好。你有什么主意吗?如果您可以将此作为答案发布,我可以选择您的答案吗?

标签: sql sql-server sql-server-2005 user-defined-functions


【解决方案1】:

执行 UDF 时,必须为架构添加前缀。

所以你需要这样称呼它:

WHERE dbo.CheckAtomicResultCriteria(parms) = '1'

【讨论】:

  • 在同一个数据库中,在同一个 UDF 中,我成功调用了不同的 TableValueFunction 而没有指定 dbo 前缀。有什么想法吗?
  • 标量值函数需要模式前缀 - 表值函数不需要。就是这样。
  • 我要补充一点,你应该总是为所有对象加上正确的模式前缀,不管它是什么类型的对象,或者你是创建对象还是只是引用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 2010-09-15
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
相关资源
最近更新 更多