根据另一个表中的描述从表中获取值

时间:2016-02-06 15:15:30

标签: sql while-loop cursor

我有一个表Values_to_find,其中包含描述以查找表中的值(大约10k行)。例如:

Table_name  Column_name Row_id
table1      2           13
table8      9           22
...

Table_name的值为:table0table1,... table9(这些表在我的数据库中是临时的,但为了显示示例,我写了正常的名称表)
Column_name:从0到9 Row_id从0到100

我想获取Values_to_find表中描述的所有值的值。我怎样才能以最佳方式做到? 我在考虑while循环或cursor,但在其中我会使用创建@query变量,如:

DECLARE @query VARCHAR(500)
SET @query = '
    SELECT ['+@Column_name+']
    FROM #'+@Table_name+'
    WHERE Row_id = '+@Row_id

然后我会使用EXEC (@query)或者像这样从@query获取返回值。但它是最佳的吗?我不知道。你有什么想法我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,要生成动态查询的结果,可以使用表变量和sp_executesql存储过程的组合。它看起来像这样:

DECLARE @result as table(Col1 varchar(200))
DECLARE @query VARCHAR(500)
SET @query = '
    SELECT ['+@Column_name+']
    FROM #'+@Table_name+'
    WHERE Row_id = '+@Row_id

INSERT INTO @result EXEC SP_EXECUTESQL @qry
SELECT * FROM @result

您也可以在this approach之后使用OPENROWSET,这需要管理员权限才能进行设置。