我在 SQL Server 中有一个用户定义的表函数,它聚合来自多个表的数据,包括另一个数据库的几个表。这是在查询中硬编码数据库名称完成的,但我们希望使数据库名称可配置(因为我们的数据库通常与其他应用程序的数据库共享服务器)。
我尝试使用存储在配置表中的数据库名称在函数内部构造一个动态查询字符串,但是:
- 当我尝试
exec(@sqlStatement)
SQL Server 时说函数内部不允许执行字符串。 - 然后我尝试
exec sp_executesql @sqlStatement
并创建了函数,但是当你执行它时,SQL Server 说在函数内部你只能运行扩展函数和过程。
所以问题是:是否可以创建访问另一个数据库中的表的函数或存储过程,而无需在数据库名称不同时重新创建函数?
TIA。