大家都知道可以用游标来提取一张表中的某一记录
fetch first mycousor into @a,@b,@c....这样是已经知道这个游标所对应的表,有哪些字段要是事先不知道某一张表的具体结构  就是说不知道表有哪些字段的情况下 又该怎么提取数据,然后把各个字段内容全部变成varchar类型,合并在一个varchar类型的变量中
??????????????????????

解决方案 »

  1.   

    表 a
    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
      

  2.   

    declare @table sysname
    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
      

  3.   

    二楼的大哥,不理解你写的呀
    怎么我用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怎么加进去??????
      

  4.   

    declare @a varchar(100)
    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