关于informix中drop临时表的问题

http://topic.csdn.net/u/20090226/23/9b68cdbe-2a00-48fe-83a6-4b1e2ddd4007.html
问题:
我写了个程序是JDBC调用存储过程,这个存储过程是会创建临时表的,现在希望删除临时表。因为不删除,任务重新执行,会报出临时表已创建

网上的答案
   A:在保持session联接上再次使用临表得用drop table name;
   B:如果起事务没有影响的话 ,还可以有一种方法,在创建之前起事务,然后后面在回滚,在回滚的时候会删掉临时表

http://topic.csdn.net/t/20050722/16/4161943.html
问题:
临时表(select   *   from   XXX   into   Temp   tempXXX)应该是基于Session的,只要我不断就可见,现在为了查询,创建了临时表,为了多次查询(不断开),会在查询结束后将创建的临时表 Drop掉,否则第二次创建临时表会报table已存在的错误。 
  
  Drop之前,我会判定一下是否TempTable真正存在,需要到哪里去判断?系统表中systables好像不保存Temp   Table的信息?

我本来就是想Drop   Table   在Inert   Into前,当时不想产生错误,所以想直接查找看是否存在这个表,如果存在则Drop,但是系统表systables中不记录Temp   Table的信息,所以才问到哪里可以查到?
当然通过错误处理也是一种处理方式,只是想问问Temp   Table的信息存在哪里了?或者根本不保存?只是在内存中?反正释放Connection后Temp   table就没有了。

网上的答案
  A:一般我们写的时候每次生成之前都会drop下,否则可能会保958错误
  B:发现如果在Trans中Rollback,临时表就没有创建,如果Commit,临时表会创建。现在采取的方法是,每次创建完毕后如果成功就记录,等操作完之后就判断,然后Drop临时表。 
   
          因为临时表是By   Connetion的,如果你的Connetiong不变,into   Temp   ddd执行第二遍的时候就会出错。 
        估计你的程式都会每次查询时重新建立连接,查询完毕就释放连接,这样是不会有问题的。 
          存储过程应该也相当于一次Connetion,所以村储过程结束后,临时表会自动消亡。

  C:在insert   into   temp   table之前先做一个drop   table   的动作不就可以解决你的问题了吗? 
  drop   table   tempxxx 
  select   *   form   xx   into   tempxxx    
   如果没有tempxxx这个table存在,在drop   table   tempxxx的时候系统会报-206的错误

  D:temp   table不会保存,只是放在内存中


遇到同样的问题....


锁定老贴子 主题:Tomcat连接池原理讨论
http://www.iteye.com/topic/5347

你可能感兴趣的:(html,tomcat,.net,jdbc,Informix)