oracle seq 小记

        在select 语句中用sequence 对象, 需要注意同级中是否存在 group by 或者 order by.

        如有sequence 对象seq_A, table 对象 tableA(F_A,F_B)

        select seq_A.nextval, F_A, F_B

           from tableA

       group by F_A, F_B

       order by F_B

        当我们执行上述语句, 将会报错误: ORA-02287: 此处不允许序号.

        错误的原因在于seq_A.nextval 和group by, order by 存在于同级中.

        我们改一下就好了:
          

        select seq_A.nextval, F_A, F_B

           from  (select F_A,F_B from tableA

                           group by F_A, F_B

                           order by F_B) a          --派生表


         执行成功,只要不是同一层的select 就没有问题了.

你可能感兴趣的:(oracle,table)