日期:2014-05-18  浏览次数:20529 次

变量应用于表名的问题
SQL code
declare @tt  text
set @tt=[成绩]
select  * from  @tt




消息 2739,级别 16,状态 1,第 3 行
对于局部变量,text、ntext 和 image 数据类型无效。
消息 1087,级别 16,状态 1,第 3 行
必须声明表变量 "@tt"。


这是为什么呢?

------解决方案--------------------
加个引号:
SQL code
create table [成绩](sid int,cid int,scroe int)
insert into [成绩] select 1,1,60
insert into [成绩] select 2,1,75
insert into [成绩] select 3,1,84
go
declare @tt nvarchar(1000)
set @tt='[成绩]'
exec('select * from '+ @tt)
/*
sid         cid         scroe
----------- ----------- -----------
1           1           60
2           1           75
3           1           84

(3 行受影响)

*/
go
drop table [成绩]