ALTER
procedure [dbo].[dongtailei]
AS
begin
declare @fname varchar(20)
set @fname = 'n'
select @fname =@fname+ 'ame' --设置字段名
declare @s Nvarchar(1000)
set @s = 'select '+ @fname --拼接字符串,注意有空格
select @s=@s+ ' from color' --注意有空格
Exec(@s)
end
AS
begin
declare @fname varchar(20)
set @fname = 'n'
select @fname =@fname+ 'ame' --设置字段名
declare @s Nvarchar(1000)
set @s = 'select '+ @fname --拼接字符串,注意有空格
select @s=@s+ ' from color' --注意有空格
Exec(@s)
end
如果存储过程接收输入参数,那么就可以对列名fname实现动态拼接,
实现SQL对列名的动态查询
实际应用在 比如:有多个语言字段 LAN_CN ,LAN_EN ,LAN_JP
看到网上说 查询语句可以直接这样写:
set @s =
'select ' @fname
' from tableName'
但我在查询器里 一直提示语法错误。
不知怎么回事。
转载于:https://blog.51cto.com/shijie/357062