2012-12-02 4 views
0

나는 다음과 같은 오라클의 절차를 (I 질문이 더 일반적인하기 위해 몇 가지 내용을 가지고했습니다 :는 INSERT에서 여러 값을 반환하고 삽입 모두 다른 테이블에

create or replace 
procedure Insert_Row (foo IN VARCHAR2, 
         buzz in VARCHAR2, 
         t_in MyType) 
is 
l_cur_id number; 
begin 
    insert into table1 (foo,buzz) 
returning bar into l_cur_id; 
BEGIN 
FOR i IN 1..t_in.count LOOP 
insert into table2 (bar, something) 
    values(l_cur_id,t_in(i)); 
    commit; 
END LOOP; 
end; 
end; 

그것을가하는 모든 행을 삽입입니다 table1로, 단지 table1에 삽입 된 행의 ID를 얻고 table2에 삽입하는 데 사용 여기

가 내가 위에서 사용하고 유형은 다음과 같습니다.

create or replace 
TYPE MyType AS VARRAY(200) OF VARCHAR2(50); 

내 질문 :buzztable2에 어떻게 삽입 할 수 있습니까? 나는. 두 번째 값. 내가 삽입하기 전에 나는 이미 buzz의 가치 때문에 단순해야한다고 생각합니다.

대단히 감사합니다.

BEGIN 
FOR i IN 1..t_in.count LOOP 
insert into table2 (bar, something) 
    values(l_cur_id,t_in(i)); 
    commit; 
END LOOP; 

이것에 :에서

변경 :

BEGIN 
FOR i IN 1..t_in.count LOOP 
insert into table2 (bar, something,buzz) 
    values(l_cur_id,t_in(i),buzz); 
    commit; 
END LOOP; 

그리 명확 : -S

+0

게시 직후에 해결되었습니다 - 일반적인 것! 해결책을 게시 할 것입니다 ... – ale

답변

0

좋아, 내가해야 할 추가 모든이 있었다.

+1

저장 프로 시저를 커밋하지 말고 호출 응용 프로그램에 두는 것이 좋습니다. 특히 루프에 커밋하지 마십시오. –

+0

감사합니다. Nicholas 님, 이번 변경을 구현하겠습니다. +1. – ale

관련 문제