sql-server - 是否可以将数据库名称作为参数传递

标签 sql-server stored-procedures

我在 cms 中构建了大约 100 个站点,每个站点都有自己的数据库。每个数据库都有相同的表。

我的存储过程需要在给定站点名称的情况下选择数据库中的所有页面。

下面我尝试将数据库名称作为参数传递,但似乎不起作用。

...
@site nvarchar(250)

AS

SELECT *
FROM @site..cmsDocument
WHERE published = 1

还有其他方法吗?

最佳答案

SELECT @dbname = quotename(dbname)
SELECT @sql = ' SELECT ... FROM ' + @dbname + '.dbo.tablename WHERE ...'
EXEC sp_executesql @sql, @params, ...

引用:

sp_executesql (Transact-SQL)

The Curse and Blessings of Dynamic SQL

关于sql-server - 是否可以将数据库名称作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624797/

相关文章:

sql - 在 sql server 2008 中将 varchar 转换为十进制

MYSQL 过程运行,但返回 0 行受影响

SQL 存档脚本

java - 存储过程无法从 java 正确执行

sql-server - 如何从存储过程返回用户定义的表类型

C# 应用程序 - 我应该使用存储过程还是 ADO.NET 和 C# 编程技术?

mysql - 如何组合两个具有来自不同表和多个列的计数的查询

java - JBoss Wildfly应用程序服务器无法连接到SQL Server

sql - 存储过程 - 功能性能差异

mysql - 是否可以在 MySQL 的 SELECT 语句中使用带有 * 的 IFNULL() ?如果没有,我的替代方案是什么?