字段与参数的简单问题SQL codeselect jan_2012 from test99declare @name varchar(20)set @namejan_2012
字段与参数的简单问题
- SQL code
select jan_2012 from test99declare @name varchar(20)set @name='jan_2012'begin select @name from test99end
jan_2012
---------------------
12345.00
12345.00
12345.00
12345.00
12345.00
12345.00
(6 row(s) affected)
--------------------
jan_2012
jan_2012
jan_2012
jan_2012
jan_2012
jan_2012
(6 row(s) affected)
为什么两个结果不一样的
[解决办法]
exec('select '+ @name +' from test99')
[解决办法]
select jan_2012 from test99
declare @name varchar(20)
set @name='jan_2012'
begin
exec('select '+@name+' from test99')
end
[解决办法]
第一个是字段值,
第二个是变量值.
[解决办法]
select jan_2012 from test99
declare @name varchar(20)
set @name='jan_2012/10'
begin
EXEC('select '+@name+' from test99')
end
select jan_2012 from test99
declare @name varchar(20)
set @name='jan_2012'
begin
EXEC('select '+@name+'/10 from test99')
end
[解决办法]
参数是数据
字段名是数据库中的一个对象
字段 jan_2012 并不等价于 字符串'jan_2012'
数据库中的对象不能参数化 除非你用 exec动态构建执行语句
[解决办法]
