本帖最后由 Dragon_pan 于 2010-05-23 16:21:51 编辑

解决方案 »

  1.   

    很是麻烦写了两个,没有判断数据类型,如果不出现text之类的就可以
    alter  proc p_1(@db varchar(100),@tb varchar(100))
    as
    begin
    declare @s nvarchar(4000)
    declare @sql nvarchar(4000)
    set @s='use '+@db+';set @sql = '' select '';'
    set @s=@s+'select @sql=@sql+''''''''+name+'':''''+rtrim(isnull('''' +name+
    '''','''''''')) +'''' ''''+'' from syscolumns where id=object_id(@db+''..''+@tb);'
    set @s=@s+'set @sql = left(@sql,len(@sql)-1)+'' D from ''+@db+''..''+@tb;'
    set @s=@s+'exec(@sql)'
    exec sp_executesql @s,N'@sql nvarchar(4000) output,@db varchar(100) ,@tb varchar(100) ',@sql output,@db,@tb
    end
    p_1 'yurong_web','BasicData'/*D                                                                                                                                                               
    D                               
    ------------------------------- 
    UniqID: +name+
     ZZS: +name+
     (所影响的行数为 1 行)
    */alter  proc p_2(@db varchar(100),@tb varchar(100))
    as
    begin
    declare @s varchar(8000)
    set @s='declare @sql nvarchar(4000);use '+@db+';set @sql = '' select '';'
    set @s=@s+'select @sql=@sql+''''''''+name+'':''''+rtrim(isnull('''' +name+
    '''','''''''')) +'''' ''''+'' from syscolumns where id=object_id('''+@db+'''+''..''+'''+@tb+''');'
    set @s=@s+'set @sql = left(@sql,len(@sql)-1)+'' D from ''+'''+@db+'''+''..''+'''+@tb+''';'
    set @s=@s+'exec(@sql)'
    exec(@s)
    end
    p_2 'master','BaseInformation'