用 DECLARE @mytable 声明 table 类型的变量。

解决方案 »

  1.   

    DECLARE @mytable  table
      

  2.   

    CREATE PROCEDURE dbo.hytjbb @mytable varchar(20) AS 
      exec('select hylx ,zzfljg INTO '+  @mytable+'  FROM FLRDSPB')
    GO
      

  3.   

    CREATE PROCEDURE dbo.hytjbb 
      @mytable varchar(20) 
    AS 
       declare @strSql varchar(8000)
      select @strSql='select hylx ,zzfljg INTO ' + @mytable + ' FROM FLRDSPB'
      exec(@strSql)
      FROM FLRDSPB
    GO
      

  4.   

    什么意思,DECLARE @mytable  table这个声明放到哪里呢
      

  5.   

    table变量不是那么用的,类似临时表.
    新建表名要动态产生的话要使用动态sql
    参考联机帮助
      

  6.   

    CREATE PROCEDURE dbo.hytjbb @myyear varchar(8),@mymonth varchar(8) , @mytable varchar(20) 
    AS 
    select KHJBXXB.hylx as 行业,FLRDSPB.zzfljg as 最终分类结果,SUM(FLRDSPB.jine)  as 金额 INTO @mytable FROM FLRDSPB,KHJBXXB  
    WHERE (KHJBXXB.KHBH=FLRDSPB.KHBH) and (FLRDSPB.bz=人民币) and (SUBSTRING(FLRDSPB.jzr,1,4)=@myyear) and (SUBSTRING(FLRDSPB.jzr,6,2)=@mymonth)
     GROUP BY KHJBXXB.HYLX,FLRDSPB.ZZFLJG
     ORDER BY KHJBXXB.HYLX,FLRDSPB.ZZFLJG
    GO
    我的存储过程是上面这样的,就是传进去一个表名,使SELECT生成的记录集放到这个表里面,但是我这样写的话参数传不进去,是什么原因呢,我只是传一个表名
    ,哪位大侠帮忙看看呀,十万火急呀
      

  7.   

    CREATE PROCEDURE dbo.hytjbb @myyear varchar(8),@mymonth varchar(8) , @mytable varchar(20) 
    AS 
    Declare @SQL Varchar(4000)
    Select @SQL='select KHJBXXB.hylx as 行业,FLRDSPB.zzfljg as 最终分类结果,SUM(FLRDSPB.jine)  as 金额 INTO '+@mytable+' FROM FLRDSPB,KHJBXXB  
    WHERE (KHJBXXB.KHBH=FLRDSPB.KHBH) and (FLRDSPB.bz=人民币) and (SUBSTRING(FLRDSPB.jzr,1,4)='+@myyear+') and (SUBSTRING(FLRDSPB.jzr,6,2)='+@mymonth+')
     GROUP BY KHJBXXB.HYLX,FLRDSPB.ZZFLJG
     ORDER BY KHJBXXB.HYLX,FLRDSPB.ZZFLJG
    Exec(@SQL) 
    GO
      

  8.   

    少了个逗号!
    CREATE PROCEDURE dbo.hytjbb @myyear varchar(8),@mymonth varchar(8) , @mytable varchar(20) 
    AS 
    Declare @SQL Varchar(4000)
    Select @SQL='select KHJBXXB.hylx as 行业,FLRDSPB.zzfljg as 最终分类结果,SUM(FLRDSPB.jine)  as 金额 INTO '+@mytable+' FROM FLRDSPB,KHJBXXB  
    WHERE (KHJBXXB.KHBH=FLRDSPB.KHBH) and (FLRDSPB.bz=人民币) and (SUBSTRING(FLRDSPB.jzr,1,4)='+@myyear+') and (SUBSTRING(FLRDSPB.jzr,6,2)='+@mymonth+')
     GROUP BY KHJBXXB.HYLX,FLRDSPB.ZZFLJG
     ORDER BY KHJBXXB.HYLX,FLRDSPB.ZZFLJG'
    Exec(@SQL) 
    GO
      

  9.   

    CREATE PROCEDURE dbo.hytjbb @mytable varchar(20) AS 
      declare @execStr varchar(8000)
      set @execStr='select hylx ,zzfljg INTO '+ @mytable + 'FROM FLRDSPB'
      exec(@execStr)
    GO--执行时:
    exec hytjbb 'table1'
      

  10.   

    对,表名不支持变量,只能用exec方法执行
      

  11.   

    你所写的程序是没有错的,错就错在你不理解临时表。你在程序中创建的是个局部临时表,这个表被创建好后,是在存储过程内被执行,存储过程是被当成一个单独的批来执行,所以,当这个批被执行完毕后,临时表也别创建了,并且很快就被系统自动删除了。
    建议你把语句更改成:
    CREATE PROCEDURE dbo.hytjbb @mytable varchar(20) AS 
      select * INTO  #39@mytable
      FROM 定单01
    select * from #39@mytable 
    GO
    你就可以非常清楚的看到,创建的临时表已经是被成功创建了,只是它又被删除了。若你确实要用此句,建议把你的局部临时表更改为全局临时表,即改为如下语句:
    CREATE PROCEDURE dbo.hytjbb @mytable varchar(20) AS 
      select * INTO  ##39@mytable
      FROM 定单01
    GO
    你再用语句:
    select * from ##39@mytable 查询一下,应该没有问题的。
      

  12.   

    CREATE PROCEDURE dbo.hytjbb declare @mytable varchar(20) AS   select hylx ,zzfljg INTO  #39 where @mytable.....
      FROM FLRDSPB
    GO或:select @mytable=....
      

  13.   

    CREATE PROCEDURE dbo.hytjbb ◎mytable varchar(20) AS 
     exec('select hylx ,zzfljg INTO  #39'+@mytable+' FROM FLRDSPB')
    GO
      

  14.   

    CREATE PROCEDURE dbo.hytjbb @myyear varchar(8),@mymonth varchar(8) , @mytable varchar(20) 
    AS 
    exec('select KHJBXXB.hylx as 行业,FLRDSPB.zzfljg as 最终分类结果,SUM(FLRDSPB.jine)  as 金额 INTO '+@mytable+' FROM FLRDSPB,KHJBXXB  
    WHERE (KHJBXXB.KHBH=FLRDSPB.KHBH) and (FLRDSPB.bz=人民币) and (SUBSTRING(FLRDSPB.jzr,1,4)='+@myyear+') and (SUBSTRING(FLRDSPB.jzr,6,2)='+@mymonth+')
     GROUP BY KHJBXXB.HYLX,FLRDSPB.ZZFLJG
     ORDER BY KHJBXXB.HYLX,FLRDSPB.ZZFLJG'
    GO--調用存儲過程
    exec hytjbb '2004','08','mytata'
      

  15.   

    --上面不行,可以這樣
    CREATE PROCEDURE dbo.hytjbb @myyear varchar(8),@mymonth varchar(8) , @mytable varchar(20) 
    AS 
    exec('select KHJBXXB.hylx as 行业,FLRDSPB.zzfljg as 最终分类结果,SUM(FLRDSPB.jine)  as 金额 INTO '+@mytable+' FROM FLRDSPB,KHJBXXB  
    WHERE (KHJBXXB.KHBH=FLRDSPB.KHBH) and (FLRDSPB.bz=''人民币'') and (SUBSTRING(FLRDSPB.jzr,1,4)='''+@myyear+') and (SUBSTRING(FLRDSPB.jzr,6,2)='+@mymonth+')
     GROUP BY KHJBXXB.HYLX,FLRDSPB.ZZFLJG
     ORDER BY KHJBXXB.HYLX,FLRDSPB.ZZFLJG'
    GO--調用存儲過程
    exec hytjbb '2004','08','mytata'