为什么我在 Run 这一段 SQL Statement 的时候非常的慢? (table 资料量不大)

[复制链接]
查看11 | 回复0 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
为什么我在 Run 这一段 SQL Statement 的时候非常的慢? (table 资料量不大)
请前辈指教, 谢谢
DECLARE
CURSOR PRD_STAOLD_CURSOR IS

SELECT

TO_DATE(TO_CHAR(SYSDATE, 'MM/DD/YYYY'), 'MM/DD/YYYY') AS CHKDATE,

COMPANY,

INVOICEYEAR,

INVOICEMONTH,

BPL,

BIGCLASS,

SUMINVAMT,

SUMINVQTY,

SUMCOST

FROM

CHK_STA_OLD

ORDER BY

COMPANY, INVOICEYEAR, INVOICEMONTH;
BEGIN

FOR PRD_STAOLD_RECORD IN PRD_STAOLD_CURSOR LOOP

UPDATE CHK_STA_RSL

SET

OLDINVAMT = PRD_STAOLD_RECORD.SUMINVAMT,

OLDINVQTY = PRD_STAOLD_RECORD.SUMINVQTY,

OLDCOST = PRD_STAOLD_RECORD.SUMCOST

WHERE

TO_CHAR(CHKDATE, 'MM/DD/YYYY') = TO_CHAR(SYSDATE, 'MM/DD/YYYY')

AND

COMPANY = PRD_STAOLD_RECORD.COMPANY

AND

INVOICEYEAR = PRD_STAOLD_RECORD.INVOICEYEAR

AND

INVOICEMONTH = PRD_STAOLD_RECORD.INVOICEMONTH

AND

BPL = PRD_STAOLD_RECORD.BPL

AND

BIGCLASS = PRD_STAOLD_RECORD.BIGCLASS;

IF SQL%NOTFOUND THEN

INSERT INTO CHK_STA_RSL

(

CHKDATE, COMPANY, INVOICEYEAR,

INVOICEMONTH, BPL, BIGCLASS,

NEWINVAMT, NEWINVQTY, NEWCOST,

OLDINVAMT, OLDINVQTY, OLDCOST,

DIFFINVAMT, DIFFINVQTY, DIFFCOST

)

VALUES

(

TO_DATE(TO_CHAR(SYSDATE, 'MM/DD/YYYY'), 'MM/DD/YYYY'),

PRD_STAOLD_RECORD.COMPANY,

PRD_STAOLD_RECORD.INVOICEYEAR,

PRD_STAOLD_RECORD.INVOICEMONTH,

PRD_STAOLD_RECORD.BPL,

PRD_STAOLD_RECORD.BIGCLASS,

0,

0,

0,

PRD_STAOLD_RECORD.SUMINVAMT,

PRD_STAOLD_RECORD.SUMINVQTY,

PRD_STAOLD_RECORD.SUMCOST,

0,

0,

0

);

END IF;

END LOOP;
END;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行