我已经创建了一个包含10个Select查询的表。我想从该表中随机获取3个查询,并执行所有这3个查询以获得它们的结果。我尝试使用EXEC,但它不起作用。我不想使用游标,因为我想在一个批处理中执行3个查询的结果。我使用的查询是
DECLARE @SqlStmt nvarchar(MAX)
SET @SqlStmt = 'SELECT TOP (3) SQLQuery FROM [dbo].[Load_Test_Queries] ORDER BY NEWID()'
EXEC (@SqlStmt)
我得到的结果是
SQLQuery
--------------------------------
SELECT TOP 10000 * FROM [dbo].[vw_UI_3PP] WHERE ID IN (80079217,80079218,80079219,80079220,80079222,80079229,80079274,80080221,80080223,80080818,80080852,80080918,80080969,80081051,80081354,80081587,80081617,80081716) OR Range > '70-80%'
SELECT TOP 2500 * FROM [dbo].[vw_UI_3PP] Where Code BETWEEN 1010 AND 1300
SELECT TOP 5 * FROM [dbo].[vw_UI_3PP]
我需要的是在一个批处理中所有这3个语句的结果。想象一下,复制此结果并在另一个会话中一次性执行。
发布于 2018-06-06 06:41:38
我猜您遗漏了一点,那就是如何以单个nvarchar
字符串的形式从SELECT TOP 3
查询中获取结果,以便您可以对其执行EXEC
操作:
drop table #tmp;
select * into #tmp from (
select 'select 1' as SQLQuery union all
select 'select 2' union all
select 'select 3'
)x;
DECLARE @SqlStmt nvarchar(MAX)
SELECT @SqlStmt = coalesce(@SqlStmt, '') + SQLQuery from (
SELECT TOP (3) SQLQuery FROM #tmp) x
--print @SqlStmt
EXEC (@SqlStmt)
https://stackoverflow.com/questions/50709597
复制相似问题