将数据库名称传递给存储过程并在代码中使用此变量名称

问题描述 投票:0回答:1

我一直在研究,但没有看到我的确切情况。我有一个 SQL Server 存储过程,它引用带有一些查找表的数据库。该过程从我们的“主数据库”运行,并使用完全限定名称(数据库名称、模式、表名称)连接到查找数据库中的查找表。我们经常会获得这些查找值的更新版本。新值将被放入新数据库中,并与先前版本中的名称相匹配。数据库名称可能会略有变化,即

LookupDB_1
然后
LookupDB_2
。当我获得更新并在编码中让
LookupDB_2
“指向”正确的查找表时,我可以创建并传递一个名为
LookupDB_2
的变量吗?代码中多次引用查找数据库。这比后来的用户在查找数据库名称上进行查找和替换并更改过程要好。

示例代码:

选择字段名称
FROM dbo.MainTable m LEFT JOIN LookupDB_1.dbo.LookupTableName l -- 查找数据库名称更改 ON m.id = l.lookupid

谢谢。

sql-server variables stored-procedures
1个回答
0
投票

您可以在另一个数据库中创建查找表的视图,并在存储过程中使用它们,而不是直接引用查找数据库。然后使用动态 SQL 创建一个存储过程,以便在查找数据库更改时更改视图。这会更容易维护,因为它在引用查找的任何对象中都是完全透明的,并且比在整个数据库中使用动态 SQL 的性能也更好。

© www.soinside.com 2019 - 2024. All rights reserved.