日期:2014-05-19  浏览次数:20467 次

郁闷,这么简单的语句都不能运行
CREATE       proc       asx
@tablename   varchar(50)     ,    
    as      
select       *   from   tablename  

GO      

exec   asx   'orders '
go


提示错误:
服务器:   消息   137,级别   15,状态   2,过程   asx,行   4
必须声明变量   '@tablename '。
服务器:   消息   208,级别   16,状态   1,过程   asx,行   4
对象名   'tablename '   无效。

请高人指点迷津~

------解决方案--------------------
--表名是变量,需要用动态SQL语句
CREATE proc asx
@tablename varchar(50)
as

declare @sql varchar(8000)

set @sql= 'select * from ' + @tablename

exec (@sql)

GO

exec asx 'orders '
go


------解决方案--------------------
CREATE proc asx @tablename varchar(50)
as
exec( 'select * from '+@tablename )