ビューに基づいて動的に作成および設定したいテーブルが多数あります。
これら2つの投稿を組み合わせたようなものを実行したい:
カーソルを使用せずに TSQL でテーブル変数をループする方法はありますか?
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
テーブルを作成するための SQL ステートメントを動的に作成するストアド プロシージャの方がよいでしょうか。
編集:
Sebastian によると、これを達成するために以下のコードを実行しています。
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)
-- @cmd を選択