Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Update
Hi List,
I need to update large table sub_svc_parm ( over billion rows). This
is PL/SQL block that does it:
I want to rewrite so it is executed as single SQL update statement.
Any suggestions ?
DECLARE v_sub_svc_id sub_svc_parm.sub_svc_id%type; v_val sub_svc_parm.val%type;
CURSOR cur_dgid_update IS
SELECT /*+ FIRST_ROWS */ b.sub_svc_id, d.destination_group_id
FROM sub_svc a, sub_svc b, sub_svc_parm c, RATE_CENTRE_TEMP_&1 d WHERE a.SUB_ID = b.SUB_ID AND a.SVC_ID = 10000 AND b.SVC_ID = 10008 AND a.SUB_SVC_ID = c.SUB_SVC_ID AND c.parm_id = 10230 AND SUBSTR(c.val,1,6) = d.npanxx;
BEGIN /* Main */
OPEN cur_dgid_update;
LOOP
FETCH cur_dgid_update INTO v_sub_svc_id, v_val;
EXIT WHEN cur_dgid_update%NOTFOUND;
UPDATE sub_svc_parm SET VAL = v_val WHERE sub_svc_id = v_sub_svc_id AND parm_id = 12650;
![]() |
![]() |