2017-01-21 1 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) 열 또는 동적 SQL을 사용하여 중첩 테이블의 (row_id, animal_id & attr3) 열? 누락 된 쉼표 :

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

이 나에게 오류가 발생했습니다 :

나는 이런 식으로 뭔가를 시도했다. 이것을 구현할 수있는 방법을 말해 줄 수 있습니까? 감사!

답변

0

삽입 문은 다음과 여야

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