我在执行
insert into table 
select 
from 
这种格式时,若执行查询会有对应记录,但是加上上面的insert部分,就没有记录了,显示插入记录数为0。
为什么呢?没想通
查询出来的记录数不多,只有10几条,但是sql有嵌套,有点复杂 看了对应的字段完全没有冲突,插入前已经把表里的数据都清空了~
使用create table as的方式可以建表,但是还是没有数据。急求各位大侠解决,救命啊~~~

解决方案 »

  1.   

    commit一下再查询看看
    还有代码最好全部贴出来
      

  2.   

    我是把多个类似sql储存在表里面,供存储过程动态循环调用,然后发现目标表没数据。
    然后我把sql提出来执行就出现上述现象~~不过有点长喔,影响大家的视觉,我深感歉意。。
    insert into fr_kpi_data_2009
      (LOCAL_CODE, 
       AREA_ID,
       MONTH_NO,
       REPORT_ID,
       REPORT_NAME,
       FIGURE1,
       FIGURE2,
       FIGURE3,
       FIGURE4,
       RATE1,
       RATE2)
      ( select t.local_code ,
             t.area_id ,
             200908 MONTH_NO,
             3 REPORT_ID,
             'fgghdf' report_name,
             sum(case month_no
                   when 200908 then
                    net_serv_num
                   else 0 end) figure1,
             sum(net_serv_num) figure2,
             null figure3,
             null figure4,
             null RATE1,
             null RATE2
        from (select a.local_code,
                     a.area_id,
                     a.month_no,
                     (a.serv_num - b.serv_num) net_serv_num
                from (select local_code,
                             area_id,
                             month_no,
                             sum(serv_num) serv_num
                        from dm_serv_suit_comp_num
                       where suit_type_id in
                             (select suit_type_id
                                from d_suit_type_new
                               where level3_code in (01, 02, 17)) and
                       local_code = '0837'
                         and month_no between 200907 and 200908
                       group by local_code, area_id, month_no) a,
                     (select local_code,
                             area_id,
                             to_char(add_months(to_date('200908', 'yyyymm'), 1),
                                     'yyyymm') month_no,
                             sum(serv_num) serv_num
                        from dm_serv_suit_comp_num
                       where suit_type_id in
                             (select suit_type_id
                                from d_suit_type_new
                               where level3_code in (01, 02, 17))
                         and local_code = '0837'
                         and month_no between
                             to_char(add_months(to_date('200907', 'yyyymm'), -1),
                                     'yyyymm') and
                             to_char(add_months(to_date('200908', 'yyyymm'), -1),
                                     'yyyymm')
                       group by local_code, area_id, month_no) b
               where a.area_id = b.area_id
                 and a.month_no = b.month_no) t
       group by local_code, area_id)
      

  3.   

    oracle 默认不提交需要手工commit提交数据库,否则没有插入成功
      

  4.   


    过程中sql执行之后有写commit哈,从表内提取的多个sql执行出来有的有数据,有的sql没有,上面的这种就是没有的。
    所以不是commit的问题
      

  5.   

    每一条语句后面加上commit 如果还没有数据,检查下是否有触发器和约束等代码
      

  6.   

    http://www.javaeye.com/wiki/topic/390212一切明了,ORACLE BUG
      

  7.   

    竟然是bug...
    修改语句试试能不能解决
      

  8.   


    能解决哈,把自然连接改成left join就解决了,我又试了inner join和right join,以及full outer join都不能解决这个问题。
    不过ORACLE 10g里面就修正了这个bug的