I have numerous tables I that I want to have created and populated dynamically based on views.
I want to perform something like a combination of these two posts:
Is there a way to loop through a table variable in TSQL without using a cursor?
Select *
Into dbo.##tblTemp
From databasename.sys.views
Declare @TableName NVARCHAR(128)
While (Select COUNT(*) From #Temp) > 0
Begin
Select Top 1 @TableName = name from databasename.sys.views
Select * into @TableName from databasename.sys.views
Delete databasename.sys.views Where name = @TableName
End
Am I better off with a stored procedure that dynamically creates the sql statement to create the table?
EDIT:
Per Sebastian, I am running the below code to accomplish this:
DECLARE @cmd NVARCHAR(MAX) = ( SELECT TOP 10 'exec sp_rename '
+ '@objname =''' + OBJECT_SCHEMA_NAME(object_id)
+ '.'
+ OBJECT_NAME(object_id) + ''
+ ''', @newname = '
+ '''v_' + name + ''
+ ''';'
+ 'SELECT * INTO '
+ OBJECT_SCHEMA_NAME(object_id)
+ '.'
+ OBJECT_NAME(object_id)
+ ' FROM '
+ OBJECT_SCHEMA_NAME(object_id)
+ '.v_'
+ OBJECT_NAME(object_id)
+ ';'
+ 'DROP VIEW '
+ OBJECT_SCHEMA_NAME(object_id)
+ '.v_'
+ OBJECT_NAME(object_id)
+ ';'
FROM db.sys.views
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)');
EXEC (@cmd)
--Select @cmd