How to create multiple views at a time ?
Here is one
Scenerio. Number of tables to be converted into views.
I have 800 tables. For each table, I have to create one view. For example there is a table called EMP. It contains the following columns.
-
EmpId
-
EmpName
-
Dept
We can obtain the view when we
execute the following script
CREATE VIEW [dev].[vwEmp]
AS
SELECT [EmpID]
,[EmpName]
,[vwEmp]
FROM [Dev].[Emp]
Like that i have to create views for 800 tables.
AS
SELECT [EmpID]
,[EmpName]
,[vwEmp]
FROM [Dev].[Emp]
Like that i have to create views for 800 tables.
Here I provide a simple script
which can convert all the tables into views. You can modify this script with
respect to your requirements and needs. Take care about Server, DB and Schema
while u code.
USE [Your_Database]
GO
DECLARE col_csr CURSOR
FOR
Select c.table_name
, c.table_schema
, c.column_name
From information_schema.tables t
inner join information_schema.columns c on c.table_name = t.table_name
where t.table_type = 'BASE TABLE'
order by c.table_name, c.ordinal_position
declare @tname nvarchar(128), @sname nvarchar(128), @cname nvarchar(128)
declare @prev_tname nvarchar(128), @prev_sname nvarchar(128)
OPEN col_csr
FETCH NEXT
FROM col_csr into
@tname, @sname,
@cname
WHILE @@FETCH_STATUS
= 0
BEGIN
if @prev_tname <>
@tname begin
print ' FROM [' + db_name() + '].[' + @prev_sname + '].[' + @prev_tname + ']'
print 'GO'
print ' '
set @prev_tname = null
end
if @prev_tname is null begin
set @prev_sname =
@sname
set
@prev_tname = @tname
print 'CREATE VIEW [' + @sname + '].[vw' + @tname + ']'
print 'AS'
print 'SELECT [' + @cname + ']'
end else begin
print ' ,[' +
@cname + ']'
end
FETCH NEXT FROM col_csr into
@tname, @sname,
@cname
END
print ' FROM ['
+ db_name() + '].[' + @prev_sname + '].[' + @prev_tname + ']'
print 'GO'
CLOSE col_csr
DEALLOCATE col_csr
GO
No comments:
Post a Comment