我有一个存储过程,
CREATE PROCEDURE dbo.up_Display
(
@table varchar(50),
)
AS
declare @indextable table([id] numeric identity(1,1),nid numeric)
insert into @indexabel select * from @table 
这个是表变量________|                      |______这个是传入的表名的变量我要如何修改才能实现这个做法????定义@sql varchar(100)
set @sql='insert into @indexabel select * from'+@table也不行

解决方案 »

  1.   

    set @sql='insert into @indexabel select * from'+@table也不行
    ----------------
    set @sql='insert into '+@indexabel+' select * from '+@table
    execute(@sql)
      

  2.   

    在外部定义表变量,在动态SQL语句中不能使用,必须在动态SQL中定义,如:create table tp(id int)
    go
    insert into tp(id) values(1)
    insert into tp(id) values(2)declare @sql varchar(8000),@table varchar(20)
    set @table='tp'set @sql='declare @tb table(id int) insert into @tb(id) select id from ' + @table + ' select * from @tb'
    select @sql
    exec (@sql)drop table tp
      

  3.   

    2楼的,你觉得你的语法通得过,不要想当然,把一个表变量和varchar变量相加再赋值给varchar变量,sql2000能不报错?!!!虽然不能完全象3楼的样子做,不过也全靠3楼的提醒,加分了