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

Sql 循环浏览结果并为新数据库创建视图,sql,sql-server,Sql,Sql Server,我正在使用SQL Server 2012 我正在将一些视图从一个数据库复制到另一个数据库。我知道我可以使用任务>生成脚本来完成这项工作,但是我想知道如何以不同的方式完成这项工作 如果我运行查询select*FROM INFORMATION_SCHEMA.VIEWS,它显然会返回我当前数据库中的视图列表。在视图定义列中,我可以看到它有创建视图的脚本 我想知道的是如何循环通过select*from INFORMATION_SCHEMA.VIEWS的结果,并在view_definition字段中执行脚

我正在使用SQL Server 2012

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

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


我想知道的是如何循环通过select*from INFORMATION_SCHEMA.VIEWS的结果,并在view_definition字段中执行脚本?我知道这可能不是最佳做法,但我只想了解您将如何执行此操作。

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

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

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

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

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

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

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

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