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