在表中有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