Loadfromcursorを使用して複数のテーブルを移動する必要があります。ただし、ソーステーブルと宛先テーブルの数値列は同じではありません。
また、テーブルの構造は変更される可能性があるため、動的にするために同じものが必要です。
ステートメントは次のようになります。
declare cur1 cursor for select col1,col2, col3 from test1;
load from cur1 of cursor insert into test2 (col1,col2, col3);
クエリに列を追加できるように、executeimmediateを使用してプロシージャからこれを呼び出す必要があります。列のリストは変数V_COL_LISTにあるため、プロシージャに対して実行する必要のあるクエリは次のようになります。
execute immediate ('declare cur1 cursor for select '||V_COL_LIST ||' from test1');
execute immediate ('load from cur1 of cursor insert into test2 ('||V_COL_LIST ||')');
ただし、上記のクエリでは、即時実行は機能しません。これに対する回避策はありますか?
使用されたADMIN_CMDを理解しました
set v_sql ='LOAD FROM (SELECT '|| v_colquery || ' FROM ' || srctablename || ') OF CURSOR INSERT INTO ' || destablename || '_LOG ( ' || v_colquery || ')';
call admin_cmd(v_sql);