执行存储在表中的查询而无循环

时间:2018-07-16 17:15:49

标签: sql-server

我想知道是否有任何方法可以在不使用循环的情况下执行存储在表中的插入查询?

    Query
-------------------------------------------------------------------------
    INSERT INTO Temp (Code,No,Date) VALUES    (HC076,NA,2018-01-01) GO
    INSERT INTO Temp (Code,No,Date) VALUES    (HC060,NA,2018-01-01) GO
    INSERT INTO Temp (Code,No,Date) VALUES    (HC055,NA,2018-01-01) GO
    INSERT INTO Temp (Code,No,Date) VALUES    (HC098,NA,2018-01-01) GO
    INSERT INTO Temp (Code,No,Date) VALUES    (HC010,NA,2018-01-01) GO

我将整个查询保存在列中,并且需要执行每个记录查询而没有循环,这是否可能?

1 个答案:

答案 0 :(得分:0)

您可以将INSERT连接在一起成为一个长字符串,然后执行该字符串。不过,对动态SQL还是要小心-想到“ SQL注入”。

declare @queries table(query nvarchar(max));

insert @queries(query) values ('insert 1 GO'), ('insert 2 GO'), ('insert 3 GO');

declare @sql nvarchar(max) = 
   (select replace(query, 'go', '; ') from @queries for xml path(''));
print @sql;