0

私は次のOracleの手順を持っています(質問をより一般的にするためにいくつかの詳細を取り出しました:

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挿入したばかりの行から ID を取得し、table1それを使用して に挿入するだけtable2です。

上記で使用しているタイプは次のとおりです。

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

私の質問:どうすれば に挿入できbuzzますtable2か? つまり、2 番目の値です。buzz挿入する前にすでに値があるので、単純でなければならないと思います。

どうもありがとう。

4

1 に答える 1

0

さて、私が追加するのはこれだけです:

から変更する:

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。

于 2012-12-02T15:43:01.730 に答える