PLSQLで問題が発生したので、ここで助けが得られることを願っています。2つのテーブルがあります。最初のテーブルはtest1と呼ばれ、2つの列(customer_idとmsisdn)があり、2つのレコードがあります。もう1つはtest_histと呼ばれ、customer_id、msisdn、seqnoの3つの列があり、1つのレコードがあります。「seqno」はシーケンス番号です。挿入されたすべてのレコードは、1だけ大きいseqno番号を取得します。私が書いたスクリプトは次のとおりです。
宣言する
CURSOR test IS
SELECT * FROM test1;
CUSTOMER_ID NUMBER;
MSISDN NUMBER;
V_SEQNO NUMBER;
始める
FOR a IN test LOOP
SELECT MAX(SEQNO)+1 INTO V_SEQNO FROM test1_hist;
INSERT INTO test1_hist
select a.CUSTOMER_ID ,v_seqno, a.msisdn
from test1;
END LOOP;
commit;
終わり;
問題は、それを実行した後、これがtest_histテーブルで取得するものであるということです:
CUSTOMER_ID SEQNO MSISDN
1.55443322 3 5422112
1.55443322 3 5422112
1.12232323 2 5454554
1.12232323 2 5454554
1.22211444 1 544643330
レコード数と同じ回数実行されます。test1テーブルに4つのレコードがある場合、合計でtest_hist 16(それぞれ4つ)に挿入されます。使用している元のテーブルには400kレコードがあるため、単純な挿入ステートメントをいくつか実行することはできません。...(:TOADを使用している場合、環境はORACLE8です。
私が欠けているものは何ですか?
アサフ、どうもありがとう。