use function from another database in computed column(在计算列中使用另一个数据库中的函数)
问题描述
我在单个数据库中安装了一组自定义CLR函数。当我需要在另一个数据库的查询/视图/过程中使用这些函数时,我只需通过三部分名称[db].[schema].[function]()
引用它们,它就可以很好地工作。
但是由于错误4120
A user-defined function name cannot be prefixed with a database name in this context
,我不能在计算列中使用它们。
当然,使用两部分名称[schema].[function]()
在同一数据库上添加计算列没有问题。
有没有办法解决这个问题?也许我可以在引用"原始"函数的每个其他数据库中创建某种"快捷"函数?或者,我是否可以像left()
或substring()
那样,将这些函数安装在一个系统数据库中,使我能够仅使用其名称调用函数?
model
db中也是如此。但我希望有更优雅的方式来做到这一点。
推荐答案
没有比这更好的方法了。计算列不能依赖外部函数(即使您将其隐藏在synonym后面,这似乎是您想要的那种"快捷"函数)-问题是跨数据库关系不能破坏模式稳定性-当数据库脱机、SINGLE_USER或被删除时会发生什么?这类似于外键不能引用另一个数据库中的表,并且表不能属于另一个数据库中的架构的原因。
您已经知道不能使用由3部分组成的名称(在SQL Server 2014中,我收到不同的错误):
消息207,级别16,状态1
列名‘Other_database_name’无效。
如果尝试使用同义词屏蔽函数,则会收到:
消息2788,级别16,状态2
同义词在架构绑定对象或约束表达式中无效。
因此,请将您的函数部署到所有数据库,或者预计算值并手动插入和存储它们,而不是依赖于计算列。
这篇关于在计算列中使用另一个数据库中的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在计算列中使用另一个数据库中的函数


- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 更改自动增量起始编号? 2021-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
- SQL 临时表问题 2022-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01