大家都知道可以用游标来提取一张表中的某一记录
fetch first mycousor into @a,@b,@c....这样是已经知道这个游标所对应的表,有哪些字段要是事先不知道某一张表的具体结构 就是说不知道表有哪些字段的情况下 又该怎么提取数据,然后把各个字段内容全部变成varchar类型,合并在一个varchar类型的变量中
??????????????????????
fetch first mycousor into @a,@b,@c....这样是已经知道这个游标所对应的表,有哪些字段要是事先不知道某一张表的具体结构 就是说不知道表有哪些字段的情况下 又该怎么提取数据,然后把各个字段内容全部变成varchar类型,合并在一个varchar类型的变量中
??????????????????????
b c d
---------- ----------- -----------
a 10 1
b 12 2
c 11 1
d 8 1
e 9 2
f 80 1
g 12 2
h 34 2
i 15 2
j 15 2
k 15 1
l 19 1declare @sql varchar(2000)
select @sql='select '
select @sql=@sql+ 'convert(varchar(100),'+name+')+'from syscolumns where object_name(id)='a'
select @sql=left(@sql,len(@sql)-1)+' from a'
exec(@sql)结果
——————
a101
b122
c111
d81
e92
f801
g122
h342
i152
j152
k151
l191
set @table = 'sysobjects'
declare @cols varchar(1000)
select @cols = coalesce(@cols+'+cast(','cast(')+name+' as varchar)' from syscolumns where id=object_id(@table)
print @cols
exec ('declare mycousor cursor for select '+@cols+' from '+@table)
declare @a varchar(8000)
open mycousor
fetch next from mycousor into @a
print @a
close mycousor
deallocate mycousor
怎么我用set @sql就不行 或者直接select @sql='select '+.....也不行
能不能解释一下 感激不尽 我不懂你那个语句怎么就可以把所有的列名放在那convert()函数语句里面???????
如select convert(varchar(100),controldate)+convert(varchar(100),information)+
convert(varchar(100),mytablename).....
??????????????要是我想按找列的id排列该怎么办? 就是在select name from syscolumns from .. by colid
by colid怎么加进去??????
set @a='select '
select @a=@a+name+',' from syscolumns where object_name(id)='tb_student'
select @结果:
select student_address,student_age,student_dempt,student_major,
student_name,student_no,student_sex,student_year,把表tb_student的字段名全部放在变量@a中,但是这时排序不是按照当初设计表的时候的顺序要是 我这么写:
declare @a varchar(100)
set @a='select '
select @a=@a+name+',' from syscolumns where object_name(id)='tb_student'
order by colid
select @a
结果:select student_address,只有设计表时最后一列的字段名怎么样才能把全部的字段都显示出来 并且按照设计表时排列????
不要用 select * from tb_student