0
我正在学习PL/SQL并编写了一个我已经粘贴到下面的PL/SQL块。 该块按预期运行,但需要花费大量时间来完成该过程。 为了检查我跑了两个表中的10条记录,它花了4分钟。 之后,我试图在大量数据上运行它,即使在5小时后也没有完成。 任何人都可以请指导我什么问题在这里,以及如何我可以提高性能。下面是我的PL/SQL块。执行大量时间的PL/SQL块
编辑:在更新查询的client_trans_vk1的client_id上没有创建索引。这是罪魁祸首吗?
DECLARE
v_client_id test_vk.client_id%TYPE;
v_trans_amount account_bal.Bal_Am%TYPE;
cursor c_client
is select client_id,TRANS_AM as transaction_amount from test_vk;
begin
OPEN c_client;
LOOP
FETCH c_client INTO v_client_id,v_trans_amount;
BEGIN
EXIT WHEN c_client%NOTFOUND;
update client_trans_vk1 ca
set ca.bal_amt = 0, ca.additional_AM = (ca.additional_AM + v_trans_amount)
where ca.client_id = v_client_id;
commit;
END;
end LOOP;
CLOSE c_client
end;
的OP没有说*“它并没有完成,即使5小时后,” * :) –
感谢米哈伊尔和杰弗里。我确实有退出声明。在SO编辑问题时,它被误删了。但遗憾的是问题仍然存在:( – vikeng21
Mikhail我接受你的答案。我有EXIT语句,但它不在FETCH和BEGIN之间,但BEGIN之后。谢谢指出它。反正我也创建索引client_id在client_trans_vk1表,你会惊讶于我的PL/SQL块在9.27秒内执行.... :)。反正杰弗里如果我能我也会upvoted你。 – vikeng21