日期:2014-05-17  浏览次数:20843 次

oracle序列与组合函数同时使用问题
CREATE
  TABLE T1
  (
  ID NUMBER NOT NULL,
  NAME VARCHAR2(20),
  AGE NUMBER(3),
  P_ID NUMBER(14) NOT NULL,
  PRIMARY KEY (ID)
  );

CREATE
  TABLE T2
  (
  ID NUMBER NOT NULL,
  NAME VARCHAR2(20),
  AGE NUMBER(3),
  SEX CHAR(1),
  PRIMARY KEY (ID)
  )


执行:
insert into t1(ID,NAME,AGE,p_id) (
select SEQ_TI3.nextval as ID,name,max(age),122 as P_ID
from t2
where sex='n'
group by ID,name
);

14:08:01 [INSERT - 0 row(s), 0.000 secs] [Error Code: 2287, SQL State: 42000] ORA-02287: 此处不允许序号

好像SEQ_TI3.nextval 与 max(age)不能同时使用,有什么办法可以解决吗?请大家帮帮忙,非常感谢!

------解决方案--------------------
把表中数据贴出来一些,然后说明你最终要实现什么。
看看能不能有其它方法。
------解决方案--------------------
用子查询,如下
select SEQ_TI3.nextval as ID,t.* from 
(select name,max(age),122 as P_ID
from t2
where sex='n'
group by ID,name ) t