我有一个表Values_to_find
,其中包含描述以查找表中的值(大约10k行)。例如:
Table_name Column_name Row_id
table1 2 13
table8 9 22
...
Table_name
的值为:table0
,table1
,... 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
获取返回值。但它是最佳的吗?我不知道。你有什么想法我怎么能这样做?
答案 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,这需要管理员权限才能进行设置。