我创建了两个函数,一个是表值函数,第二个是标量值函数。在调用表值函数时,我不需要使用Schema名称,但对于Scalar值函数,我需要schema。我的问题是为什么?因为两者都是用户定义的功能。
表值函数
SELECT * FROM split ('1,2,3',',')
标量值函数
SELECT dbo.GetESTDate()
答案 0 :(得分:0)
这是Sql Server规则。 即使您不需要为TVF使用架构,也请永远使用它!想象一下有人在SQL Server中实现了内置的“拆分”功能,你的代码会破坏,因为它会与内置的TVF发生冲突。即使你不使用架构,也要添加一些像ufn这样的前缀。
答案 1 :(得分:0)
你的问题很有趣。我实际上不确定官方的原因是什么,但我可以向您指出Microsoft的CREATE FUNCTION文档,这实际上表明在调用标量函数时必须至少使用两部分命名。
必须至少使用函数的两部分名称来调用标量值函数。 (Reference)
我会更多地挖掘一下,看看我是否能获得更多信息。你也让我感兴趣。