我一直在搜索如何执行我存储在具有SELECT语句结果的表中的语句。
我发现了类似的问题,但没有一个有效。
所以现在我有一个表格,其中第一列的单元格包含
DROP TABLE table1
DROP TABLE table2
..... and so on.
我已尝试使用EXEC
命令,但我无法使其正常工作。
请帮忙。谢谢。
答案 0 :(得分:1)
如果你想执行所有语句,我认为你需要实现一个游标
DECLARE @Query VARCHAR(250)
DECLARE crs_ExecStatement CURSOR FAST_FORWARD
FOR
SELECT Column1 FROM YourTable
OPEN crs_ExecStatement
FETCH NEXT FROM crs_ExecStatement INTO @Query
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC(@Query)
FETCH NEXT FROM crs_ExecStatement INTO @Query
END
CLOSE crs_ExecStatement
DEALLOCATE crs_ExecStatement
答案 1 :(得分:0)
使用EXEC
并将值与GO
分隔为下一个演示: -
Create database Demo
go
use Demo
go
Create table MyTable (Value varchar (200))
go
insert into MyTable values ('Drop Table table1')
go
insert into MyTable values ('Drop Table table2')
go
insert into MyTable values ('Drop Table table3')
go
declare @Query nvarchar(max)
SELECT @Query = isnull(@Query,'') + Value + char (10) + 'Go'
FROM MyTable
--print @Query
SET @Query = 'EXEC (''' + REPLACE(REPLACE(@Query, '''', ''''''), 'GO', '''); EXEC(''') + ''');'
EXEC (@Query)
使用go
执行动态查询的想法取自here。