2017-01-21 13 views
1

ネストした表の挿入問合せに関する質問があります。ネストした表:ネストした表の特定の列に値を挿入します。

CREATE OR REPLACE TYPE obj_animals_tab IS TABLE OF obj_animals; 

ネストされた表は、この中に含まれています:

CREATE TABLE animals 
(
    animal_id INTEGER, 
    animal_ptr obj_animals_tab 
) 
NESTED TABLE animals_ptr STORE AS obj_animals_tab; 

私は(ROW_IDに挿入するにはどうすればよい

CREATE OR REPLACE TYPE obj_animals as OBJECT (
    row_id INTEGER, 
    animal_id INTEGER, 
    attr1 VARCHAR2(30), 
    attr2 VARCHAR2(30), 
    attr3 VARCHAR2(30) 
); 

私はこのようなテーブルタイプを持っている:私はこのようなオブジェクトが持っています、animal_id、attr1)列または(row_id、animal_id & attr3)列を動的SQLを使用してネストした表に追加しますか?行方不明カンマ:

INSERT INTO animals(animal_id,animal_ptr(row_id,animal_id,attr3)) 
VALUES(1,obj_animals_tab(obj_animals(1,1,'4'))); 

この

は私にエラーを投げた:

私はこのような何かを試してみました。これを実装する方法を教えてください。ありがとう!

答えて

0

INSERT文では、このようにする必要があります

INSERT INTO animals (animal_id, animal_ptr) 
    VALUES (1, obj_animals_tab(obj_animals(1,1,'4'))); 

この構文を使用することができ、既存の値を更新するために:

UPDATE 
    (SELECT t.animal_id as animal_id_T, obj.animal_id as animal_id_OBJ, 
     attr1, attr2, attr3 
    FROM animals t 
     NATURAL JOIN TABLE(obj_animals_tab) obj) 
SET attr3 = 'xyz' 
WHERE animal_id_T = 1 
    AND animal_id_OBJ = 1; 

は、多分両方のテーブルにanimal_idを使用することは非常にスマートではないですし、オブジェクトタイプ。

+0

必要な列に値を挿入する必要がある場合、構文がどのように見えるか考えてみましょうか?例えば、私はattr1の価値を望んでいません。私はrow_id、animal_id、attr3だけにしたい。 attr1とattr2にnullを指定する必要があります。INSERT INTO animals(animal_id、animal_ptr)VALUES(1、obj_animals_tab(obj_animals(1,1、null、null、 '4'))); – Sivaraman

+0

@ Sivaramanは私のアップデート –

+0

を参照してください。 – Sivaraman

関連する問題