我试图执行以下声明:
INSERT INTO mySchema.ODI_PRICELIST_THREAD_TABLE
(
src_table,
thread_id,
creation_date
)
SELECT DISTINCT
source_table AS src_table,
num_thread_seq.nextval AS THREAD_ID,
create_date AS CREATION_DATE
FROM mySchema.nb_pricelist_ctrl
我需要THREAD_ID
字段是从1到X的数字,其中X是在运行时定义的,因此我使用了从1到X的序列(我使用ODI)。
但是,我一直有 ORA-02287 序列不允许错误...
我已经阅读了this个问题,但我仍然无法解决如何解决问题的方法。 我一直在寻找,但我没有找到解决方案的运气。请帮忙
答案 0 :(得分:1)
来自OraFaq:
以下是您无法使用序列的情况:
对于SELECT语句:
- 在WHERE子句中
- 在GROUP BY或ORDER BY子句中
- 在DISTINCT条款中
- 连同UNION或INTERSECT或MINUS
- 在子查询中
答案 1 :(得分:1)
关键字distinct
与序列查询不兼容。如果您真的需要它,请尝试类似
INSERT INTO mySchema.ODI_PRICELIST_THREAD_TABLE (
src_table,
thread_id,
creation_date)
select
a.src_table,
num_thread_seq.nextval,
a.create_date
from
(select distinct src_table, create_date from mySchema.nb_pricelist_ctrl) a
答案 2 :(得分:0)
试试这个
INSERT INTO mySchema.ODI_PRICELIST_THREAD_TABLE
(
src_table,
thread_id,
creation_date
)
SELECT DISTINCT
source_table AS src_table,
num_thread_seq.nextval() AS THREAD_ID,
create_date AS CREATION_DATE
FROM mySchema.nb_pricelist_ctrl