http://topic.youkuaiyun.com/u/20090226/23/9b68cdbe-2a00-48fe-83a6-4b1e2ddd4007.html
问题:
我写了个程序是JDBC调用存储过程,这个存储过程是会创建临时表的,现在希望删除临时表。因为不删除,任务重新执行,会报出临时表已创建
网上的答案
A:在保持session联接上再次使用临表得用drop table name;
B:如果起事务没有影响的话 ,还可以有一种方法,在创建之前起事务,然后后面在回滚,在回滚的时候会删掉临时表
http://topic.youkuaiyun.com/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
问题:
我写了个程序是JDBC调用存储过程,这个存储过程是会创建临时表的,现在希望删除临时表。因为不删除,任务重新执行,会报出临时表已创建
网上的答案
A:在保持session联接上再次使用临表得用drop table name;
B:如果起事务没有影响的话 ,还可以有一种方法,在创建之前起事务,然后后面在回滚,在回滚的时候会删掉临时表
http://topic.youkuaiyun.com/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