oracle 10g 临时表问题创建了一个事物级临时表 temp_grbh插入了一些一些grbh的值,在查询另一个表时这样操
oracle 10g 临时表问题
创建了一个事物级临时表 temp_grbh
插入了一些一些grbh的值,
在查询另一个表时这样操作
- SQL code
select * from yw_ryjbxx ry where exists (select 1 from temp_grbh where ry.grbh = temp_grbh.grbh)
yw_ryjbxx表有记录但是关联临时表后查不到记录,直接查询临时表temp_grbh又有记录。为什么呢?
[解决办法]
--确认下操作提交了吗?在提交的时候,temp_grbh事务级临时表已经被清空了,如果没有提交则应该有数据
- SQL code
select ry.* from yw_ryjbxx ry where exists(select 1 from temp_grbh where name = ry.name )
[解决办法]
1、ON COMMIT DELETE ROWS (TRANSACTION级的临时表),临时表是事务指定,每次提交后ORACLE将截断表。
2、ON COMMIT PRESERVE ROWS(SESSION级的临时表),临时表是会话指定,当中断会话时ORACLE将截断表。
建议把你的事务级临时表建表语句贴出来看看,估计就是这的问题~你试下吧
[解决办法]
楼主:
你的子查询后面的条件如果不成立,那么子查询永远不会返回结果集(即使你"select 1 from ……”),所以exists 永远不成立,所以最后什么也查不到。
比如:select * from emp WHERE EXISTS (SELECT 1 FROM dept WHERE 1=2);结果什么查不到
