很是麻烦写了两个,没有判断数据类型,如果不出现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'
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'