Raj*_*jan 10 sql-server functions
当用户使用默认架构 (dbo) 映射时,我们可以选择 [dbo] 下的所有表,而无需为架构添加前缀。
如果它在默认模式下,我们可以执行没有前缀的存储过程。
鉴于此,为什么我们需要使用模式为函数添加前缀?
谢谢!
Sha*_*nky 11
那为什么我们可以调用dbo下创建的不带前缀的函数(schema)呢?
可以在使用标量表达式的地方调用标量值函数。这包括计算列和 CHECK 约束定义。也可以使用 EXECUTE 语句执行标量值函数。必须至少使用函数的两部分名称来调用标量值函数。
所以这基本上是 SQL Server 开发团队设置的限制,我认为它非常正确。即使以某种方式允许(只是为了对话),我仍然会使用 Schema 前缀。
我总是支持使用模式名称,即使它不添加也能工作。这是最佳实践,所有“优秀”的开发人员都会使用它,无论它有多少冗余。
我看到的另一个原因是,数据库引擎需要一些东西来区分系统功能getdate ()
和用户定义的功能。如果允许您在没有模式名称的情况下调用函数,数据库引擎将如何区分用户创建的名为 Getdate 的函数或系统 GETDATE() 函数。