我在查询分析器里,使用
select * into #sd2 from policy
select * from #sd2 
没点问题,
为什么在DELPHI里 
MainDM.ViewQuery.Close;
  MainDM.ViewQuery.Filter:='';
  MainDM.ViewQuery.CommandText:='select * into #ss1 from vwPolicy where '+sSQL+' order by InsCompanyName,ProClassName,PolicyNo';
  MainDM.ViewQuery.CommandText:='select * from #ss1‘;
  MainDM.ViewQuery.Open;
为什么这样会报错?

解决方案 »

  1.   

    分两次写
    先 select * into #sd2 from policy 
    再 select * from #sd2
      

  2.   

    你这样写当然不对了,第二条赋值语句把第一条覆盖了,
    MainDM.ViewQuery.CommandText实际的内容是:
    "select * from #ss1",
    第一句根本就没有执行,#ss1表也没有创建,所以会报错。
    写成以下方式可以:
    MainDM.ViewQuery.CommandText:= 'select * into #ss1 from vwPolicy where  '+sSQL+ ' order by InsCompanyName,ProClassName,PolicyNo ' + #13 +10 + 'select * from #ss1'; 
      

  3.   

    因为你又写了一次CommandText:=
    所以值为第二条SQL语句了
    可以写到一起
      

  4.   

      MainDM.ViewQuery.Close; 
      MainDM.ViewQuery.Filter:= ' '; 
      MainDM.ViewQuery.CommandText:= 'select * into #ss1 from vwPolicy where  '+sSQL+ ' order by     sCompanyName,ProClassName,PolicyNo '; 
      MainDM.ViewQuery.Execsql; 
      MainDM.ViewQuery.Close; 
      MainDM.ViewQuery.CommandText:= 'select * from #ss1‘; 
      MainDM.ViewQuery.Open;