我要把一个表(y0335)中的列名+列值引出,用什么样的方法好?
--@coln:列名,@colv:该列值,@text:各列名+列值
declare @i int
set @i=1
declare @text nvarchar(1000),@sql varchar(1000)
set @text=''
while @i<16    --假定为16列
begin
declare @coln nvarchar(30),@colv varchar(10)--取出列名
set @coln=(select col_name(object_id('y0335'),@i) )--如果列名不空,取列值,并进行连接
if @coln<>''
begin
select (@coln)
--select (@colv)
set @sql = 'select '+ @coln +' from y0335 where sid='+char(39)+'20033502'+char(39)
select (@sql)
exec (@sql)
 
 set @colv = exec (@sql)    --该语句怎么写??
 if @colv<>''
begin
 set @text = @text + '| ' +@coln+','+@colv
 select (@text)
end
end
set @i=@i+1
end
select @text

解决方案 »

  1.   

    推测:
    1类似这样写不知可否
    select @colv= 'select '+ @coln +' from y0335 where sid='+char(39)+'20033502'+char(39)2 在@sql中把你的结果select * into 新表
    然后再select @colv=[colname] from 新表
      

  2.   

    declare @i int
    set @i=1
    declare @text nvarchar(1000),@sql nvarchar(1000)
    set @text=''
    while @i<16 --假定为16列
    begin
    declare @coln nvarchar(30),@colv varchar(10)

    --取出列名
    set @coln=(select col_name(object_id('y0335'),@i))

    --如果列名不空,取列值,并进行连接
    if @coln<>''
    begin
    if object_id('gggg') is not null 
    drop table gggg
    set @sql = 'select ltrim('+ @coln +') aaaa into gggg from y0335 where a2='+char(39)+'20033502'+char(39)

    exec (@sql)
    select @colv=aaaa from gggg

    if @colv<>''
    begin
    set @text = @text + '| ' +@coln+','+@colv
    end
    end
    set @i=@i+1
    end
    select @text