对象名做变量,要用动态SQL语句.
如:
declare @a tablename,@sql nvarchar(1000)
set @a='table1'
set @sql='select * from '+@tablename
exec(@sql)

解决方案 »

  1.   

    exec('
    -------------------------------------------------
    --              变量的定义                     ---
    -------------------------------------------------
    declare @sDocument varchar(50)      --文号
    declare @sFilePath varchar(200)     --文件路径
    declare @sClass    varchar(50)      --文件类型
    declare @sDate     smalldatetime    --日期
    declare @sFlag     varchar(2)       --标识
    declare @sTableNS  varchar(20)      -- 表名(*********定义变量***)
    declare @nNumTemp  varchar(10)      --取出数字
    declare @nNum     numeric           --转成数字去零
    declare @i      int   ---------------------------------------------------
    ---             定义游标实现逐条扫描更改          ---
    ---------------------------------------------------
    declare myCursor cursor for
    select 文号,文件路径,类型,日期,标识,表名 from #tempUnUapte  for updateopen myCursor
    fetch next from myCursor into @sDocument,@sFilePath,@sClass,@sDate ,@sFlag,@sTableNS
    WHILE @@FETCH_STATUS = 0
      Begin      
        insert into '+@sTableNS+'( 编号,日期,文件路径) VALUES ( @nNum,@sDate,@sFilePath) (********使用变量出错。说是@sTableNS未定义**)
       fetch next from myCursor into cument,@sFilePath,@sClass,@sDate ,@sFlag
      End
    CLOSE myCursor
    DEALLOCATE myCursor')
      

  2.   


    set @sql='insert into '+@sTableNS+'( 编号,日期,文件路径) VALUES ('''+ @nNum+''','''+@sDate+''','''+@sFilePath+''')'
    exec(@sql)
      

  3.   

    exec('
    -------------------------------------------------
    --              变量的定义                     ---
    -------------------------------------------------
    declare @sDocument varchar(50)      --文号
    declare @sFilePath varchar(200)     --文件路径
    declare @sClass    varchar(50)      --文件类型
    declare @sDate     smalldatetime    --日期
    declare @sFlag     varchar(2)       --标识
    declare @sTableNS  varchar(20)      -- 表名(*********定义变量***)
    declare @nNumTemp  varchar(10)      --取出数字
    declare @nNum     numeric           --转成数字去零
    declare @i      int   ---------------------------------------------------
    ---             定义游标实现逐条扫描更改          ---
    ---------------------------------------------------
    declare myCursor cursor for
    select 文号,文件路径,类型,日期,标识,表名 from #tempUnUapte  for updateopen myCursor
    fetch next from myCursor into @sDocument,@sFilePath,@sClass,@sDate ,@sFlag,@sTableNS
    WHILE @@FETCH_STATUS = 0
      Begin      
        insert into '+@sTableNS+'( 编号,日期,文件路径) VALUES ( @nNum,@sDate,@sFilePath) (********使用变量出错。说是@sTableNS未定义**)
       fetch next from myCursor into cument,@sFilePath,@sClass,@sDate ,@sFlag
      End
    CLOSE myCursor
    DEALLOCATE myCursor')
      

  4.   

    OR:-------------------------------------------------
    --              变量的定义                     ---
    -------------------------------------------------
    declare @sDocument varchar(50)      --文号
    declare @sFilePath varchar(200)     --文件路径
    declare @sClass    varchar(50)      --文件类型
    declare @sDate     smalldatetime    --日期
    declare @sFlag     varchar(2)       --标识
    declare @sTableNS  varchar(20)      -- 表名(*********定义变量***)
    declare @nNumTemp  varchar(10)      --取出数字
    declare @nNum     numeric           --转成数字去零
    declare @i      int   ---------------------------------------------------
    ---             定义游标实现逐条扫描更改          ---
    ---------------------------------------------------
    declare myCursor cursor for
    select 文号,文件路径,类型,日期,标识,表名 from #tempUnUapte  for updateopen myCursor
    fetch next from myCursor into @sDocument,@sFilePath,@sClass,@sDate ,@sFlag,@sTableNS
    WHILE @@FETCH_STATUS = 0
      Begin      
        --insert into @sTableNS( 编号,日期,文件路径) VALUES ( @nNum,@sDate,@sFilePath) (********使用变量出错。说是@sTableNS未定义**)
        exec('insert into '+@sTableNS+'( 编号,日期,文件路径) VALUES ( @nNum,@sDate,@sFilePath)') 
       fetch next from myCursor into cument,@sFilePath,@sClass,@sDate ,@sFlag
      End
    CLOSE myCursor
    DEALLOCATE myCursor