2011-07-08 61 views
0

我試圖插入表中,其中ID是序列中的下一個,並且其他值從表中被拉出。我知道這是行不通的:插入一個序列並選擇

INSERT INTO ORDERS(order_id, foo1, foo2, foo3 
VALUES(SEQUENCE_ORDERS.nextval,(SELECT foo1, foo2, foo3 
           FROM bar 
           WHERE X = Y)) 

我只是試過了,它得到了「沒有足夠的值」的錯誤。

我想知道正確的語法是什麼讓這個工作。我在Oracle DB中使用PLSQL(我正在編寫一個過程的一部分)。

我知道選擇不應該在VALUES()內,但我該如何添加序列?我能想到的唯一選擇是插入觸發器,但我寧願不必這樣做。

編輯:謝謝大家,就像我想通了,每個人都發布了。不知道在選擇中有序列是可以的。

+0

有時候,我只是需要打出來我有那麼一下子說到我有什麼問題。感謝那些回答! – null

回答

8
INSERT INTO ORDERS(order_id, foo1, foo2, foo3) 
SELECT SEQUENCE_ORDERS.nextval,foo1, foo2, foo3 
           FROM bar 
           WHERE X = Y 
+0

你模仿;-) – DCookie

+0

@DCookie - 大聲笑,:)只能擊敗你11秒 – dcp

+0

@DCookie:現在好--dcp's a * thief!* =) –

0

嘗試將SEQUENCE移到SELECT語句。

1

嘗試:

INSERT INTO ORDERS(order_id, foo1, foo2, foo3 
SELECT SEQUENCE_ORDERS.nextval, foo1, foo2, foo3 
           FROM bar 
           WHERE X = Y