我在存储过程中使用了临时表,但第二次运行就提示临时表已经存在。如何解决这个问题?听说可以通过断开数据库,重新连接实现。但我不知在程序中怎么做?请各位大侠帮忙。

解决方案 »

  1.   

    用个bool型变量保存 是否有存在    if (!bHasTmpTable)
        {
            strSQL = "select ' ' as Reconcile,* into #tmpWTOffset2 from WTOffset where 1=0";
            if (adoqWTOffset->Active)
                adoqWTOffset->Close();
            adoqWTOffset->SQL->Clear();
            adoqWTOffset->SQL->Add(strSQL);
            adoqWTOffset->ExecSQL();
            bHasTmpTable = true;
        }
    //清空记录
        strSQL = "delete #tmpWTOffset2 ";
        if (adoqWTOffset->Active)
            adoqWTOffset->Close();
        adoqWTOffset->SQL->Clear();
        adoqWTOffset->SQL->Add(strSQL);
        adoqWTOffset->ExecSQL();
    临时表在连接断开时被删除,如用ADOConnection的话,就是在其Disconnect时删除。要删除的话可以把连接断开
      

  2.   

    上面是C++Builder的语句,Delphi差不多也是这样写的
      

  3.   

    用个内存表控件吧dxMemData.很简单的.