循环结果并为新数据库创建视图

时间:2014-10-22 10:33:08

标签: sql sql-server

我正在使用SQL Server 2012。

我正在将一些视图从一个数据库复制到另一个数据库。我知道我可以使用任务>生成脚本为我这样做,但是我想知道如何以不同的方式做到这一点。

如果我运行查询select * FROM INFORMATION_SCHEMA.VIEWS,它显然会返回我当前数据库中的视图列表。在view_definition列中,我可以看到它具有创建视图的脚本。

我想知道如何循环(select * FROM INFORMATION_SCHEMA.VIEWS)的结果并执行view_definition字段中的脚本吗?我知道这可能不是最好的做法,但我只是想了解你将如何做这样的事情。

1 个答案:

答案 0 :(得分:3)

您可以尝试打开游标并为每行创建视图:

USE [Target DB];
DECLARE @view VARCHAR(MAX)

DECLARE curs CURSOR 
FOR SELECT VIEW_DEFINITION FROM [Source DB].INFORMATION_SCHEMA.VIEWS

OPEN curs

FETCH NEXT FROM curs 
INTO @view
WHILE @@FETCH_STATUS = 0
BEGIN 
    EXEC(@view)
    FETCH NEXT FROM curs 
    INTO @view
END 
CLOSE curs
DEALLOCATE curs