begin
declare @tempTable table 
(
[日期] [smalldatetime] NULL,
[机械番号] [Varchar](30) NULL,
[数量] [decimal] NULL
)insert @tempTable
SELECT ....
endCREATE TABLE #FIELD(FIELD VARCHAR(30)) INSERT INTO #FIELD SELECT DISTINCT 机械番号 FROM @tempTable  在查询分析器中:
当我执行到最后一句话时,提示错误:必须声明@temptable变量。
而当我直接执行 “SELECT DISTINCT 机械番号 FROM @tempTable”这句话时,可用。为什么?

解决方案 »

  1.   

    既然直接执行 “SELECT DISTINCT 机械番号 FROM @tempTable”这句话时可用
    那么,用一个游标变量传递一下不行吗?或用Create来建立临时表啊
      

  2.   

    begin
    declare @tempTable table 
    (
    [日期] [smalldatetime] NULL,
    [机械番号] [Varchar](30) NULL,
    [数量] [decimal] NULL
    )insert @tempTable
    SELECT ....
    endCREATE TABLE #FIELD(FIELD VARCHAR(30)) 
    declare @sql  varchar(8000)
    set @sql=''
    select @sql='INSERT INTO #FIELD SELECT DISTINCT 机械番号 FROM '+ @tempTable  
    exec(@sql)
      

  3.   

    不是啊 ,明明楼主的语句可以啊,直接执行 “SELECT DISTINCT 机械番号 FROM @tempTable”才报错啊 ,
      

  4.   

    相反的,yoki的是错误的 ,我再sql2000中测试,你们测试了 吗 ?yoki语句根本就会报错啊
    select @sql='INSERT INTO #FIELD SELECT DISTINCT 机械番号 FROM '+ @tempTable  
    char 怎么可以 加表变量呢?
      

  5.   

    declare @tempTable table 
    (
    [日期] [smalldatetime] NULL,
    [机械番号] [Varchar](30) NULL,
    [数量] [decimal] NULL
    )CREATE TABLE #FIELD(FIELD VARCHAR(30)) INSERT INTO #FIELD SELECT DISTINCT 机械番号 FROM @tempTable  SELECT DISTINCT 机械番号 FROM @tempTable  --------------------------------
    SQL SERVER 2000 上试验过没问题呀!