1.insert插入语句是插入表中记录的最后还是当前游标之后?我插入记录时使用insert语句与存储过程插入位置不定啊?如何使每次插入的记录都在最后?
2.建立视图时(left join)如何先把前表的记录按照order by排序再比对后表?
CREATE OR REPLACE FORCE VIEW v_view(vid, a, b, c,
                                         d)
AS
   SELECT ROW_NUMBER () OVER (ORDER BY 1), u.a, u.b, w.c,
          v.c
     FROM test1 u LEFT JOIN test2 v
          ON u.a= v.b          
          LEFT JOIN test3 w ON v.a= w.b;
 如何先使test1的主键a进行排序再left join?order by放在最后vid就乱了。

解决方案 »

  1.   

    第一个问题没明白如何先使test1的主键a进行排序再left   join 没有什么意义吧 
    改成这样试试
    ROW_NUMBER() OVER(ORDER   BY   u.a)
      

  2.   

    insert插入语句是插入表中记录的最后还是当前游标之后?我插入记录时使用insert语句与存储过程插入位置不定啊?如何使每次插入的记录都在最后?数据在表中的位置好像是由oracle决定的吧 一般新加的都是在最后的吧
    你可以用order by排序显示
      

  3.   

    1:使用APPEND插入即可详细 ,参考
    http://www.itpub.net/viewthread.php?tid=912008&extra=&page=1oracle append有什么作用?
    请教一下,oracle中append是做什么用的。
      insert /*+append*/ into table1 select * from table2在使用了append选项以后,insert数据会直接加到表的最后面,而不会在表的空闲块中插入数据。
    使用append会增加数据插入的速度。
    /*+APPEND*/的作用是在表的高水位上分配空间,不再使用表的extent中的空余空间
      

  4.   

    第一个问题,你要了解high-water  ,还有 PCTFREE,PCTUSED ,这些。
    第二个问题,用select是内嵌视图(inline view),这个排序譬如:
    select * from (select id ,name from stu order by name) where rownum <9
    不知道这个是不是你想要的效果。
      

  5.   

    ROW_NUMBER() OVER(ORDER BY u.a)测试过可以解决至于第一个问题可能与当前游标有关的吧