根据现有表字段创建SQL语句

时间:2019-09-20 08:48:34

标签: sql sql-server

有一个包含数据库和表名的表,是否可以基于这些字段创建一些动态查询?像这样:

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”是存储在其他位置的值。

谢谢。

1 个答案:

答案 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,将假定返回一行。