我有很多我想創建並基於視圖動態填充的表格。用表格替換視圖
我要像這兩個職位的組合進行了一句:
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
我是最好用動態創建的SQL語句來創建存儲過程桌子?
編輯:
每塞巴斯蒂安,我運行下面的代碼來實現:
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
你想達到什麼目的?您是否想爲與視圖具有相同架構的每個視圖創建一個表?你想在這些表中的數據?該觀點應該發生什麼? - 另外,你正在努力解決的底層問題是什麼? –
是的,我希望每個視圖的表具有與視圖相同的架構。是的,我也想填充這些表中的數據。該視圖需要由表格替換。 –
你介意我問你爲什麼需要這樣做嗎?你知道沒有好的機制來保持這些新表中的數據與它最初來自的表同步嗎? –