是否可以在没有模式名称的情况下调用用户定义的函数?

Posted

技术标签:

【中文标题】是否可以在没有模式名称的情况下调用用户定义的函数?【英文标题】:Is it possible to call a user-defined function without the schema name? 【发布时间】:2010-10-04 21:57:28 【问题描述】:

我使用的是 MS SQL 2005,当我创建一个函数时,我需要输入架构名称来调用它:

select dbo.MyFunc

我所有的表也在“dbo”模式中,我不需要模式名称来引用它,所以我想知道我是否缺少一些可以对函数执行相同操作的配置。

【问题讨论】:

Is there a way to use a function on a Microsoft SQL Server Query without using "dbo." before the function?的可能重复 【参考方案1】:

简短的回答,不,不是。

您应该考虑在 all 您的数据库对象前加上架构所有者,以避免让 sql server “查找”。

它使您的语句更具可读性并略微提高性能(尽管您可能不会注意到它)。

问候, 利文

【讨论】:

+1 用于考虑 dbo 所有权,特别是对于收缩包装的应用程序【参考方案2】:

与所有其他数据库对象(表、视图和存储过程)不同,用户定义的函数在引用时总是需要模式名称。这是 SQL Server 的一个怪癖。

【讨论】:

【参考方案3】:

*标量值函数必须至少使用函数的两部分名称来调用

http://msdn.microsoft.com/en-us/library/ms186755.aspx

+1 家长

鲍里克

【讨论】:

+1 因为与 Anthony Faull 的回答相反,这里我们得到了来源/引文

以上是关于是否可以在没有模式名称的情况下调用用户定义的函数?的主要内容,如果未能解决你的问题,请参考以下文章

Commander.js 在没有命令的情况下调用时显示帮助

在没有 for 循环的情况下应用用户定义的函数

是否可以添加一个在不同数据库中调用用户定义函数的检查约束?

单例模式

day18 函数定义参数;名称空间;全局变量及局部变量。

是否可以在 WCF 中没有无参数构造函数的情况下序列化对象?