有一个包含数据库和表名的表,是否可以基于这些字段创建一些动态查询?像这样:
DECLARE @mysearch NVARCHAR(MAX)= 'SELECT db_name, tbl_name FROM UserConfig where ID = 1';
SELECT * FROM [db_name]..[tbl_name]
成为 db_name 和 tbl_name @mysearch 查询的结果值。
为澄清起见,我需要从中选择数据的数据库和表名称位于表中,而不是硬编码。
示例:
SELECT * FROM MYDB..MyTable
但是“ MYDB”和“ MyTable”是存储在其他位置的值。
谢谢。
答案 0 :(得分:2)
我在这里读了很多书,但是在这之后你真的 了吗?
DECLARE @SQL nvarchar(MAX);
DECLARE @CRLF nchar(2) = NCHAR(13) + NCHAR(10);
SELECT @SQL = N'SELECT *' + @CRLF +
N'FROM ' + QUOTENAME(db_name) + N'.dbo.' + QUOTENAME(tbl_name) + N';'
FROM UserConfig
WHERE ID = 1;
EXEC sp_executesql @SQL;
对于表ID
中的单个值UserConfig
,将假定返回一行。