我可以在没有 [dbo] 的情况下调用 SQL Server 2005 中的函数吗?

Posted

技术标签:

【中文标题】我可以在没有 [dbo] 的情况下调用 SQL Server 2005 中的函数吗?【英文标题】:Can I call a function in SQL Server 2005 without the [dbo]? 【发布时间】:2011-07-27 16:28:14 【问题描述】:

我有一个第 3 方程序,它坚持使用 UCase(value) 重写某些 SQL 语句。 SQL Server 2005 不支持UCase,所以我想我可以创建一个返回UPPER(value) 的用户定义函数并为其分配UCase 的别名,但看来我仍然需要使用[dbo].[Alias]

是否可以在没有[dbo] 前缀的情况下调用用户定义函数?或者有没有办法让 SQL 以SELECT UPPER('abc') 运行SELECT UCase('abc')

【问题讨论】:

【参考方案1】:

遗憾的是,不,如果不使用所有者作为前缀,就无法在 SQL Server 中调用 UDF。您可以在此处找到有关此主题的许多讨论:

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=call+sql+server+function+without+dbo+prefix

当然,解决方案是让第 3 方修复应用程序。这不是一个选项吗?

【讨论】:

第三者是微软,所以我认为它不会很快发生。该产品是 Microsoft Dynamics。 等等 -- MS Dynamics 构造的数据库调用与 SQL Server 不兼容?似乎有些不对劲。在这里在黑暗中拍摄......该应用程序是否可以配置为针对不同的 DBMS 运行? mysql 和 Access 都支持 UCASE。 Dynamics 是否认为它正在达到其中之一? 我找不到任何设置,但我不会停止寻找。整个 Dynamics 数据库是 SQL Server,而我们遇到问题的部分是他们的 Integration Manager 应用程序。除非您尝试从连接到字符串字段的两个数据源中提取数据,否则该程序运行得非常好。由于大部分脚本都是用 VB 完成的,我猜这是被忽略的东西。 查看 Dynamics 文档,支持 SQL Server 作为产品的主要后端,因此这个问题只会在 Integration Manager 中出现是有道理的。似乎假设应该通过 JET 引擎访问数据源,该引擎通常用于访问和文本文件,并且是我所知道的唯一支持 UCASE 的 MS 产品。 接受你的回答,因为你回答了我原来的问题:)

以上是关于我可以在没有 [dbo] 的情况下调用 SQL Server 2005 中的函数吗?的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 调用存储过程失败,找不到用户 'dbo'

可选参数sql函数[重复]

创建表同义词

如何在没有数据库连接的情况下从 dbplyr 生成 SQL?

T-SQL:如何在动态 SQL 中使用参数?

关于SQL Server2005数据表字段关联问题