为什么我们只需要使用Schema名称作为Scalar函数

时间:2016-03-03 17:22:56

标签: sql-server tsql azure-sql-database

我创建了两个函数,一个是表值函数,第二个是标量值函数。在调用表值函数时,我不需要使用Schema名称,但对于Scalar值函数,我需要schema。我的问题是为什么?因为两者都是用户定义的功能。

表值函数

SELECT * FROM split ('1,2,3',',') 

标量值函数

SELECT dbo.GetESTDate()

2 个答案:

答案 0 :(得分:0)

这是Sql Server规则。 即使您不需要为TVF使用架构,也请永远使用它!想象一下有人在SQL Server中实现了内置的“拆分”功能,你的代码会破坏,因为它会与内置的TVF发生冲突。即使你不使用架构,也要添加一些像ufn这样的前缀。

答案 1 :(得分:0)

你的问题很有趣。我实际上不确定官方的原因是什么,但我可以向您指出Microsoft的CREATE FUNCTION文档,这实际上表明在调用标量函数时必须至少使用两部分命名。

  

必须至少使用函数的两部分名称来调用标量值函数。 (Reference)

我会更多地挖掘一下,看看我是否能获得更多信息。你也让我感兴趣。