On Aug 30, 4:36 pm, Gayathri <[email protected]> wrote:
> Hi All,
>
> Could you please help me with this asap.
>
> I have a table as below:
> (all the value in target_key is null)
>
> source_key     target_key
> 20
> 1
> 31
> 8
>
> This is what I need to acheive:
> source_key           target_key
> 1                          100
> 8                          101
> 20                        102
> 31                        103
>
> Need to update target_key with a series on number after sorting the
> source_key.
>
> I generated the number 100 - 103 using the query below and have collected
> into a collection. *But facing problem to update with order by *
>
> as
> ..
>
> TYPE ntable_key_list_type IS TABLE OF NUMBER;
>
> v_key_list ntable_key_list_type;
> ...
>
> begin
> ..
> ..
>
> *Select Rownum
> bulk collect into v_key_list
> From dual Connect By Rownum <= v_rec_cnt;*
>
> forall i in v_key_list.first .. v_key_list.last
>  update
>  ....;
>
> end
>
> Please suggest asap. Thanks in advance
> G

You're taking the long way around:

SQL> create table gayathri_stuff(
  2          stuff_key       number,
  3          target_key      number
  4  );

Table created.

SQL>
SQL> insert all
  2  into gayathri_stuff(stuff_key)
  3  values(20)
  4  into gayathri_stuff(stuff_key)
  5  values(1)
  6  into gayathri_stuff(stuff_key)
  7  values(31)
  8  into gayathri_stuff(stuff_key)
  9  values(8)
 10  select * From dual;

4 rows created.

SQL>
SQL> commit;

Commit complete.

SQL>
SQL> select * From gayathri_stuff;

 STUFF_KEY TARGET_KEY
---------- ----------
        20
         1
        31
         8

SQL>
SQL> declare
  2          cursor get_sorted is
  3          select stuff_key from gayathri_stuff order by stuff_key;
  4
  5          tgt_key number:=100;
  6
  7  begin
  8          for rec in get_sorted loop
  9                  update gayathri_stuff
 10                  set target_key = tgt_key
 11                  where stuff_key = rec.stuff_key;
 12
 13                  tgt_key := tgt_key + 1;
 14          end loop;
 15
 16          commit;
 17
 18  end;
 19  /

PL/SQL procedure successfully completed.

SQL>
SQL> select * From gayathri_stuff;

 STUFF_KEY TARGET_KEY
---------- ----------
        20        102
         1        100
        31        103
         8        101

SQL>


David Fitzjarrell

-- 
You received this message because you are subscribed to the Google
Groups "Oracle PL/SQL" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/Oracle-PLSQL?hl=en

Reply via email to