2017-05-02 216 views
-1

表にデータを挿入したいとします。 1つのフィールドは別のテーブルから取得したいので、selectステートメントを内部で使用しています。select文を使用して挿入する場合、「ORA-00984:ここでは列が使用できません」

INSERT INTO t.table1 ( 
    id, 
    id_t2, 
    date_of_change 
) 
VALUES ( 
    t.table1_seq.nextval, 
    SELECT s.id_id_t2 from t.table2 s where s.something='something', 
    TO_DATE('02/05/2017 13:43:34','DD/MM/YYYY HH24:MI:SS') 
) 

select文は常に1つのフィールド(1行)のみを返しますが、これは私がエラーを受け取っている理由と推測します。 1フィールドだけのSELECT文でINSERT文を書く方法はありますか?それはできますか?そうでない場合は、この問題に対する他の解決方法がありますか?ありがとうございました。

+2

です。selectステートメントの最後に余分な閉じ括弧 ')'があります。 – Utsav

+0

ありがとう、訂正しました。 – ljerka

答えて

2

あなたはこれがあなたのselectソーステーブルからいくつかの値と、いくつかの定数値で指定することができます

insert into table1 (fields) 
select fields from table2 

のフォームにあなたの全体のinsert文を翻訳することができます。結果のクエリは

INSERT INTO t.table1 ( 
    id, 
    id_t2, 
    date_of_change 
) 
SELECT t.table1_seq.nextval, 
     s.id_id_t2, 
     TO_DATE('02/05/2017 13:43:34','DD/MM/YYYY HH24:MI:SS') 
FROM t.table2 s 
WHERE s.something='something' 
関連する問題