zjcxc(邹建) 大哥及各位高手请进 如果得到表中的字段名称 问题
--测试数据
create table 表(col1 int,col2 int,col3 int,col4 int)
insert 表 select 1,2,2,1
--union all select 2,2,2,2
--union all select 2,2,2,1
go
--或者:
create proc p_qry
@tbname sysname, --要查的表名
@re nvarchar(4000) out
as
set nocount on
declare @s nvarchar(4000)
set @s=''
select @s=@s+'+case when ['+name+']=2 then '','+name+''' else '''' end'
from syscolumns where id=object_id(@tbname)
select @s='select @s='+stuff(@s,1,1,'')+' from ['+@tbname+'] set @s=stuff(@s,1,1,'''')'
exec sp_executesql @s,N'@s nvarchar(4000) out',@re out
go
--调用
declare @re nvarchar(4000)
exec p_qry '表',@re out --上面的调用少了表名
select 结果=@re
go
--删除测试
drop table 表
drop proc p_qry
/*--测试结果
结果
---------------------
col2,col3
(所影响的行数为 1 行)
--*/
===========================
以上是您给我做的 我有些不明白
您的思路 是先把 表中的字段名取出来
1。select @s=@s+'+case when ['+name+']=2 then '','+name+''' else '''' end'
~~~~
不太明白 您是用单引号还是双引号??
exec sp_executesql @s,N'@s nvarchar(4000) out',@re out
N‘ 是什么意思
不好意思 由于基础很差 请多包涵 谢谢!