2014-10-22 72 views
0

我正在使用SQL Server 2012.遍历结果并为新数据库创建视图

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

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

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

回答

2

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

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