2015-04-27 63 views
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 

我需要THREAD_ID字段設置爲從1到X的數,其中X在運行時被定義所以我用從1到X的序列(我正在使用ODI)。 不過,我一直具有ORA-02287序列不允許的錯誤...

我讀過this的問題,我仍然不明白我怎麼能解決我的問題。 我一直在尋找,但我找不到解決方案。請幫助

回答

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 
+0

這種說法不執行任何插入,對不對? – SaintLike

+1

這並不重要。我將添加插入以消除歧義。 –

1

從OraFaq:

以下的地方,你不能用一個序列的情況:

SELECT語句:

  • 在WHERE子句
  • 在GROUP BY或ORDER BY子句中
  • 在DISTINCT子句中
  • 隨着一個UNION或相交或MINUS
  • 在一個子查詢

http://www.orafaq.com/wiki/ORA-02287

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