2011-07-08 20 views
0

テーブルに挿入しようとしていますが、IDはシーケンス内の次のもので、他の値はテーブルから引き出されます。私は、これは動作しませんことを知っている:シーケンスとSELECTを挿入します。

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 - LOL、:)は11秒であなたを打ち負かします – dcp

+0

@DCookie:dcpの泥棒!* =) –

0

SEQUENCEをSELECTステートメントに移動してみてください。

1

試してみてください。

INSERT INTO ORDERS(order_id, foo1, foo2, foo3 
SELECT SEQUENCE_ORDERS.nextval, foo1, foo2, foo3 
           FROM bar 
           WHERE X = Y 
関連する問題