我在 PLSQL 上遇到了一个问题,希望我能在这里得到一些帮助。我有 2 个表 - 第一个称为 test1,有 2 列 - customer_id 和 msisdn,其中有 2 条记录。另一个称为 test_hist,有 3 列 - customer_id、msisdn 和 seqno,有 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 条)。我使用的原始表有 40 万条记录,所以我不能只做一些简单的插入语句....(:我使用 TOAD,环境是 ORACLE 8。
知道我错过了什么吗?
非常感谢阿萨夫。