怎样判断有没有同名的实际表我知道,但怎样判断是否有同名临时表我就要请教各位了,因为临时表的名字好像在systemobjects表中查不到,而且临时表是在tempdb 库中,在你当前项目使用的自己定义的库中的systemobjects表中一般没有记录,所以,我不知怎样办了。
请大家附上调试通过的代码。
谢谢!!!

解决方案 »

  1.   

    好像有同种临时表,通过加#实现,有一种是全局的——你不要建全局的,基本可以不作判断。如果要判断的话,在tempdb 的sysobjects 中查找,用like,因为系统会在你的表名后加随机数。具体的看看帮助吧。
      

  2.   

    与判断实际表一样,只是sysobjects要写成tempdb.dbo.sysobjects,临时表以#开头,其他没什么区别
      

  3.   

    与判断实际表一样,只是sysobjects要写成tempdb.dbo.sysobjects,临时表以#开头,其他没什么区别
      

  4.   

    大家写成
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add();
    ADOQuery1.ExecSQL;
    这个样子啊,关键是在ADD()里给我加个语句,我自己正在试,总是搞不好,到处错
      

  5.   

    好多东西在查询分析器中可以,我以搞到DElphi中就不行了
      

  6.   

    局部临时表(#t)用不着这样做,只有全局临时表(##t)才需要:
    ...
    ADOQuery1.SQL.Add('if exists (select * from tempdb.dbo.sysobjects where name=''##t'' and xtype=''U'' ');
    ADOQuery1.SQL.Add('drop table ##t');
    ...
      

  7.   

    其实局部的一样可以这样搞,我下面的是调试通过了的:
     EntryDM.ADOQR_temp1.Close;
          EntryDM.ADOQR_temp1.SQL.Clear ;
          EntryDM.ADOQR_temp1.SQL.Add('if (object_id('+quotedstr('tempdb..#temp_table1')+') is not null) '+'Drop Table #temp_table1');
          EntryDM.ADOQR_temp1.ExecSQL;