在表中有113列。並且表中有兩個默認記錄,一個是未知的,另一個是不適用的。因此,每列都有自己的默認值來表示未知和不適用。用光標插入語句
我不想寫定期插入語句來獲得這兩個記錄。
所以,我試圖插入每列使用遊標。
從INFORMATION_SCHEMA.COLUMNS得到了該表的列名,並試圖使用「插入選擇」語句的另一個位置插入來自確切的表值,但我們從INFORMATION_SCHEMA獲取列的名稱
Declare @col_name varchar(50)
declare my_cur CURSOR for
select column_name from information_schema.columns
where table_name = 'tabl' and table_catalog = 'db'
and table_schema = 'dbo'
Fetch next from my_cur
into @col_name
while @@FETCH_STATUS = 0
BEGIN
Insert into db.dbo.tabl (***@col_name***)
select ***@col_name*** from openrowset('sqlncli', 'server=my_server; trusted_connection=yes;', db.dbo.tabl)
fetch next from my_cur into @col_name
end
close my_cur
deallocate my_cur
go
但是,我並沒有意識到,@col_name將被視爲字符串,而不是對象(列)
是否有這種情況或任何替代解決方案的任何解決辦法。
您是否將數據庫設計留給了前臺的祕書? – ChaosPandion 2010-01-05 20:26:45
該表是數據倉庫中的維度表。所以,不能抱怨。 – 2010-01-05 20:33:03
「在表格中有113列」... 我認爲你應該在那裏停下來,按照其他人的建議,並重新考慮你的設計。 – Tesserex 2010-01-05 20:45:22