对于所有的插入,需要更多的时间来插入am,在应用程序支付表中只有4000行。有没有办法优化我的代码
DECLARE
TYPE PAY_TAB_REC IS RECORD (
PAYMENT_ID NUMBER,
PAYMENT_TYPE_ID NUMBER,
AMOUNT NUMBER,
PAYMENT_DATE DATE,
CREATED_DATE DATE,
CREATED_BY NUMBER,
PAYMENT_RECEIPT_NO VARCHAR2 (20),
MODIFIED_BY NUMBER,
MODIFIED_DATE DATE,
PAYEE_ID NUMBER (10),
PAYER_ID NUMBER (10),
IS_URGENT NUMBER (1) DEFAULT 0,
APP_ID NUMBER
);
TYPE PAY_TAB_TYPE IS TABLE OF PAY_TAB_REC
INDEX BY PLS_INTEGER;
PAY_TAB PAY_TAB_TYPE;
CURSOR C_APP
IS
SELECT SEQ_PAYMENT.NEXTVAL PAYMENT_ID, PAYMENT_TYPE_ID, AMOUNT,
PAYMENT_DATE, CREATED_DATE, CREATED_BY, PAYMENT_REF_NO,
MODIFIED_BY, MODIFIED_DATE, PAYEE_ID, PAYER_ID, IS_URGENT,
APP_ID
FROM APPLICATION_PAYMENT;
BEGIN
OPEN C_APP;
LOOP
FETCH C_APP
BULK COLLECT INTO PAY_TAB LIMIT 100;
FORALL I IN 1 .. PAY_TAB.COUNT
INSERT INTO PAYMENT
VALUES PAY_TAB (I);
END LOOP;
CLOSE C_APP;
COMMIT;
END;从application_payment表中选择值并插入到支付表中。但它需要更多的时间和循环运行,没有尽头。帮助我在application_payment表中只有78000张记录。
发布于 2014-11-05 07:18:12
您可以使用select insert而不是循环
INSERT INTO PAYMENT
SELECT SEQ_PAYMENT.NEXTVAL PAYMENT_ID, PAYMENT_TYPE_ID, AMOUNT,
PAYMENT_DATE, CREATED_DATE, CREATED_BY, PAYMENT_REF_NO,
MODIFIED_BY, MODIFIED_DATE, PAYEE_ID, PAYER_ID, IS_URGENT,
APP_ID
FROM APPLICATION_PAYMENT;https://stackoverflow.com/questions/26751510
复制相似问题