例如:
set @sql='insert into table1 (test1,test2,test3) select test01,test02,'+ @test03 +' from table2'
exec (@sql)
当@test03 是数字时,能正常执行,当@test03 是数字加字符时,字符会被截断,当@test03 是字符串时,会出现列名无效。其中所有变量都是nvarchar类型。表中的字段都是varchar。
变量用三个引号时,也能正常执行,如:
set @sql='insert into table1 (test1,test2,test3) select test01,test02,'''+ @test03 +''' from table2'
但是当后面有where子句,并且where子句:
set @sql='insert into table1 (test1,test2,test3) select test01,test02,'''+ @test03 +''' from table2 where test01+'' ''+test02>(select max(test1) from table1'
这时候就不能执行了。条件就是test01+空格+test02的值要大于test1
test1,test2,test3是table1中的字段
test01,test02,test03是table2中的字段
这是什么原因?bug??
win2003sp2+sql2005sp3,以上代码在sql2005中调试的,请各位达人指教,谢谢!